他们在C ++中的任何程序是否可以最大化内存使用量,直到达到“内存转储”(蓝屏然后重新启动)。只是好奇,要在Windows XP上执行此操作。 它需要什么? 使用乘法或加法的无限循环可以最大化内存使用吗?我想不是。它只是增加CPU使用率(但遗憾的是不高达10-20%)。然后是什么方式?
答案 0 :(得分:1)
分配变量时使用内存。最快的方法是先预先分配一个非常大的数组,或者在循环中使用new
或malloc
:
while (true)
{
new int[10000];
}
当你的内存不足时,这最终会抛出异常。
答案 1 :(得分:1)
如果您想要占用所有可用内存,那么就这样做:
int main()
{
while(true)
{
char *buffer=new char[1024];
}
return 0;
}
这会以1K块的速度消耗掉内存。但是,所有这一切都会导致您的进程可用的所有虚拟内存(在32位Windows上大约2GB)被占用,此时您的程序将会崩溃而死亡而不会影响其他任何人。
如果您正在寻找能够在内存不足时导致Windows崩溃的内容,那么您需要在内核空间中运行代码,因此您需要编写类似设备驱动程序的内容。