代码之家  ›  专栏  ›  技术社区  ›  pasha

C++-向量的大小会超过系统RAM吗?

  •  -1
  • pasha  · 技术社区  · 2 年前

    如果我一直在向量中插入元素,直到出现内存不足的异常。 最终矢量的大小限制是多少?

    1. RAM大小
    2. 辅助内存的大小,因为正在使用虚拟内存。
    1 回复  |  直到 2 年前
        1
  •  2
  •   Nate Eldredge    2 年前

    这完全取决于系统。

    但是,在典型的桌面和服务器系统上,通过 new 在C++应用程序中是虚拟内存的分配。如果系统有交换空间,那么完全有可能分配比物理RAM大小更多的虚拟内存,所以你的#2更接近事实。

    当然,你的矢量不能增长到填满 全部的 物理内存加交换,因为操作系统本身、程序的其余部分、系统上运行的其他进程等都需要一些。系统可能会被配置为施加其他限制,例如对任何一个进程或用户可用的虚拟内存量的固定限制,还可能为系统关键用途保留一些内存。