为什么我的程序在我的向量&lt;矢量&lt; vector <int>&gt; &GT;是否大于RAM?</int>

时间:2013-05-28 01:12:35

标签: c++ memory-management vector ram

我已经实现了一个系统,它将一些数据作为输入,并产生一个非常大的vector< vector< vector<int> > >然后输出到文件。

计算结果后,我决定计算最终三维矢量中的数字总数,它是:1386502951

这意味着存储此向量所需的内存总量至少为1386502951*4 bytes = 5.16512599 GB

但是我的RAM内存只有4 GB。

有人可以向我解释这是怎么回事吗?

提前谢谢!

2 个答案:

答案 0 :(得分:4)

您的应用程序可以分配比计算机上物理安装的内存更多的内存,因为它支持虚拟内存。分配,分页和释放虚拟内存由操作系统处理,以允许您的应用程序运行,而不必担心耗尽物理内存。

请记住,当您的应用程序从其堆中释放内存时,可能不会立即释放释放已分配的内存。这倾向于让人们认为他们的应用程序有时会使用更多的内存。

有很多网站讨论虚拟和物理主题以及操作提供的任何API,让您可以对其进行控制。快速的Google Dance应该会为您提供大量有关此主题的链接。

答案 1 :(得分:2)

可能有很多原因导致这种情况不会失败。

正如评论中所述,最有可能的是Windows将大部分内容放入虚拟内存(而不是RAM)中。

另一种选择(在某些情况下)是优化者正在清理你的清单(可能?)

查看确切情况的最佳方法是打开任务管理器并切换到“性能”选项卡,然后查看它使用的RAM监视器。