可能看起来有些傻,但我现在有点困惑。为什么这个程序不会消耗所有的内存呢? 例如:我在Linux终端上运行以下程序(内存为2G):
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout<<sizeof(int*)<<endl;
for(int i=0; i<pow(2.0,30.0);i++)
{
new int(i);
}
return 1;
}
1) 我确认了这台机器的int大小为4个字节,那么对于2GB内存,它只能容纳2^30/2^2=2^28。
2) 按照上述逻辑,你如何更改程序以实际使用全部2GB内存?
补充:我只是想确保我理论上理解得正确。如果没有虚拟内存或操作系统优化等等,2GB RAM只能容纳2^28个int,对吗?在这种情况下,上面的程序将消耗所有内存?你知道如何在Linux中关闭虚拟内存/交换内存等功能吗?
谢谢!