我目前正在测试一个必须在Application Verifier 6.3中为64位系统打开大文件的应用程序。我的应用程序必须能够分配大约100 - 200 MB的内存,这在以前的调试和发布模式下运行良好。
这是我用来分配内存的代码:
[...]
char* fileStream;
try
{
fileStream = new char[fileLength]; // The fileLength is usually about 100 000 000 and 200 000 000
}
catch (std::bad_alloc& ba)
{
MessageBox(NULL, "Failed to allocate enough memory for the required operation", "Not enough memory", MB_ICONERROR | MB_OK);
return;
}
[...]
我将应用程序添加到应用程序验证程序并启用了所有基本测试:
现在,奇怪的是,new char[fileLength]
始终返回NULL
,文件大小为97 MB!这显然导致了以后的访问冲突。所以现在我遇到了比以前更多的问题......
默认情况下,应用程序验证程序是否应用了一些堆分配限制?我可以以某种方式禁用它们吗?