我有一个项目,我想触发一些内存异常,看看它们在哪里发生而不必加载2GB文件。我该怎么做?
答案 0 :(得分:1)
只需运行一个快速循环,分配内存块直到用尽。
void* p;
do {
p = malloc (1024 * 1024);
} while (p != NULL);
答案 1 :(得分:0)
我假设你谈到了32位Windows的2GB限制。如果你这样做 - 这可能会成功:
预先预先分配一些内存以产生一些基本负载,例如。
struct memwaste
{
char* m_ptr;
memwaste() : m_ptr(new char[1024*1024*104]) {} //waste 1 gb
~memwaste() { delete[] m_ptr }
}x;
将此结构添加到您的代码中,它“浪费”一些内存(也称为baseload)。现在你可以运行你的程序了。最终会遇到分配内存的问题。
memwast的基本负载必须根据您的需要进行调整 - 这取决于您要检查内存分配错误的位置。