所以我在类里面学到了内存分配的概念,我想为什么不开发一个可以充分占用资源的程序。该程序非常简单。源代码如下 - 环境 - MS Visual Studio 2013 操作系统 - Windows 8 x64
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
char i;
char *worm;
for (i = 120; i < 130; i++)
{
worm = (char*)malloc(sizeof(i));
}
return 0;
}
现在,我的笔记本电脑有 5 GB
的 RAM
但我发现在达到大约 2 GB
的值后,处理器保持正在工作,但无论如何内存使用量都不会增加。那么有什么方法可以完全占用内存并使 PC 变得几乎无用?
请注意,我这样做只是为了教育目的:|
编辑:- 我从任务管理器中注意到的另一件事是,整个空闲内存都分配给了程序,但程序无法获得更多内存,因为操作系统已保留它,因为它包含缓存程序。
那么,有什么方法可以解决内存不足而导调用脑死机甚至变慢的问题吗?
最佳答案
检查 malloc()
的返回值,您会发现在某个时刻开始返回 NULL
,这意味着分配失败。
这发生在您耗尽了一些内存资源之后,可能是您进程的虚拟地址空间,许多 32 位环境被限制在大约 2GB。有关 Windows 的信息,请参阅 Memory Limits for Windows Releases .
关于c - 程序在达到限制后不分配更多内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21274255/