我目前正在测试一个必须在 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 大的文件!这显然导致了后来的访问违规。所以现在我比以前遇到了更多的问题......
应用程序验证程序是否默认应用一些堆分配限制?我可以以某种方式禁用它们吗?