所以我一直试图解决我的问题一段时间,虽然我无法发布任何大量的来源(NDA),但我可以发布一小部分内容,而且; d喜欢在程序启动时得到关于可能导致此类问题的一些意见。
int main(int aArgumentCount, char** aArguments)
{
LZ_CHECK_MEMORY_QXL;
LZ_CHECK_MEMORY_QXL;
LZ_CHECK_MEMORY_QXL;
LZ_CHECK_MEMORY_QXL;
// ... Etc
}
所有定义的内容都是扩展为一个函数,该函数分配一个大小为150000000的整数数组,然后立即删除它。
然而,在我们的应用程序的情况下,该分配的第一次/第二次调用导致立即std :: bad_alloc崩溃。
有没有人有任何指针我应该深入研究这个问题?
答案 0 :(得分:1)
std::bad_alloc
表示程序无法分配您希望分配的内存。根据您的系统和编译器,150000000个整数具有600 MiB或1.2 GiB的大小。分配这一大小的单块内存可能超出了您的操作系统/系统的功能,因此难怪它失败了。您将需要使用另一个数据结构,而不是一个巨大的数组。