所以我一直在试图解决我的问题,有一段时间了,虽然我不能发布任何大量的源代码(NDA),但我可以发布一小块,我想得到一些关于什么可能导致这种问题的输入,因为程序开始。
int main(int aArgumentCount, char** aArguments)
{
LZ_CHECK_MEMORY_QXL;
LZ_CHECK_MEMORY_QXL;
LZ_CHECK_MEMORY_QXL;
LZ_CHECK_MEMORY_QXL;
// ... Etc
}
define所做的只是扩展成一个函数,分配一个大小为150000000的整数数组,然后在…之后立即删除它
然而,在我们的应用程序中,第一次/第二次调用该分配会立即导致std::bad_alloc崩溃。
有没有人有任何指针,我应该挖掘到找到这个问题?
std::bad_alloc
意味着程序不能分配您希望它分配的内存。150000000个整数(取决于您的系统和编译器)的大小为600 MiB或1.2 GiB。分配如此大小的单个内存块可能超出了您的操作系统的能力,因此失败也就不足为奇了。您将需要使用另一种数据结构,而不是单个巨型数组。