为什么操作系统不拒绝此程序的内存?
Why doesn't the operating system deny the memory for this program?
以下C 动态分配内存的巨大数组,其中包括大量整数数组。
#include <iostream>
// VALUE1 > 1000000
class Int{
int* p = new int[VALUE1];
};
int main() {
// VALUE2 > 1000000
Int* ppi = new Int[VALUE2];
while(true){
}
}
我理解的是,内存分配在堆中(很大(。该程序向操作系统请求内存,并处理内存分配。因此,我的问题是,如果没有可用的内存资源,那么为什么OS拒绝记忆(尽管它会崩溃(?这是操作系统。以上程序使我的计算机冻结。如果这很重要,我在Linux 4.9上有8 GB RAM。
如果程序没有可用的内存资源,为什么OS拒绝内存?
OS可能会拒绝整体内存的整体分配,否则可能不会。不否认分配并不是所有操作系统都必须做的。
允许整体定位意味着程序可以根据需要分配尽可能多的虚拟内存,并且在不再有免费的物理内存映射之前终止。仅在访问内存时映射物理内存。即使映射了所有物理内存,其中一些也可以交换到磁盘上。
在Linux 4.9
上
Linux确实支持内存的整体分配。
以上程序使我的计算机冻结。
该程序是无限循环。如果循环未优化为睡眠或拆除,则将无限期地要求处理器时间。如果只有1个CPU核心,则根据调度算法,可能需要一些时间才能获得CPU时间。
相关文章:
- 有没有一种方法可以测量c++程序的运行时内存使用情况
- 内存清理程序报告全局对象构造中未初始化值的使用
- 多线程程序中出现意外的内存泄漏
- C++ 程序不会因为内存而终止
- 可视化 使用 VS Code 查找C++应用程序中的内存泄漏
- C++程序什么都不做,但瓦尔格林德显示内存分配
- 应用程序内存使用量减少
- 当注入程序的内存空间时,如何读取从 0 到 0xFFFFFFFFF 的每个字节?我正在创建模式扫描仪
- 如何运行外部程序,向其传递内存地址以读取/写入?
- 在C++应用程序中使用 Tensorflow:如何释放 GPU 内存
- C++程序错误:malloc():内存损坏
- 任务管理器 - C/C++ 应用程序 - 分配的地址空间与已用内存
- OpenGL GLFW 应用程序 - 客户端内存限制
- 我们如何在ESP8266上减小程序内存上的代码大小
- shared_ptr的删除程序是否存储在自定义分配器分配的内存中?
- 正在从程序内存中分解x指令
- 随着时间的推移,我的程序越来越慢,我不知道为什么.内存泄漏
- 开发C++在运行大内存程序时崩溃
- 动态内存c++程序中的字符串错误
- 在linux上编写的一个简单的c++共享内存程序:分段错误