gpt4 book ai didi

c++ - 如何耗尽内存?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:16 26 4
gpt4 key购买 nike

这可能看起来很傻,但我现在对此有点困惑。为什么这个程序不会消耗所有的内存?例如:我在 Linux(2G RAM)终端中运行以下程序,

  #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) 我确认 native 的int大小是4字节,那么对于2GB的内存,它只能容纳2^30/2^2=2^28

2) 按照上面的逻辑,你怎么能改变程序实际消耗所有 2GB 内存?

补充:我只是想确保我在理论上正确理解它。如果没有虚拟内存或操作系统优化等,2GBRAM 只能容纳 2^28 int,对吗?那样的话,上面的程序会消耗掉所有的内存吗?您知道我如何在 Linux 中关闭虚拟内存/交换内存功能等吗?

谢谢!

最佳答案

由于虚拟寻址,就 RAM 而言,您可以分配比实际拥有的更多的内存。操作系统会自动调出您不使用的内存(到硬盘)。通过这种方式,您的 RAM 充当硬盘交换文件的大型缓存,它代表您系统的实际内存。

您的实际 限制是指针的地址空间,除非您正在为 64 位平台编译(并在其上运行),否则它是 32 位的。所以你可以分配4GB的空间。

关于c++ - 如何耗尽内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6605706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com