gpt4 book ai didi

c++ - 为什么我可以为数组分配比计算机实际拥有的内存更多的内存

转载 作者:行者123 更新时间:2023-12-01 12:49:09 24 4
gpt4 key购买 nike

我能够成功运行代码:

char* p = new char[34493878088];
cout << "Success at " << 34493878088 << " bytes" << endl;
delete[] p;
据我了解,它分配了一个 34 GB 的字符数组。但是,我的计算机只有 16 GB 的内存,而我的页面文件只有 3 GB,这怎么可能?

最佳答案

保留的地址空间(“虚拟内存”)不会立即映射到物理内存中。这被延迟到内存被访问。
当您第一次访问内存位置时,最初会发生页面错误中断,然后内核才会配置内存 Controller (即硬件,CPU 的一部分)为您的程序在该地址放置一页物理内存地点。然后程序从它被中断的地方恢复,并没有看到这些事情发生。
地址空间中正式保留但从未访问过的区域不使用实际的物理内存,并且可能大于可用的物理内存量。

关于c++ - 为什么我可以为数组分配比计算机实际拥有的内存更多的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62632152/

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