gpt4 book ai didi

C++ 程序使用的内存比系统上可用的内存多?

转载 作者:行者123 更新时间:2023-12-03 23:39:53 26 4
gpt4 key购买 nike

我编写了以下内存占用程序:

int main() {
while(1) {
auto* blah = new char[1024 * 1024 * 1024]{};
}
return 0;
}
据我所知,在循环的每次迭代中都保留了整 GB 的内存。我原以为这会立即崩溃。但它以某种方式运行,直到我停止它。
检查我的系统时,我发现我的小程序占用了比我机器上可用的内存更多的内存,这怎么可能?这里发生了什么?
enter image description here

最佳答案

现代操作系统在内存分配方面可能很聪明,并且在您使用尝试分配的内存之前不会实际分配任何内容。在这样的系统上,mallocnew 在您分配时不会失败,但是当您尝试使用 OS 告诉您它已分配的内存时,整个程序都会停止运行,即使它在物理上不能。有关更多信息,请参阅 this

关于C++ 程序使用的内存比系统上可用的内存多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66518448/

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