堆积腐败/坏分配立即在主要问题

时间:2014-08-13 08:36:53

标签: c++ main heap-corruption

所以我一直试图解决我的问题一段时间,虽然我无法发布任何大量的来源(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崩溃。

有没有人有任何指针我应该深入研究这个问题?

1 个答案:

答案 0 :(得分:1)

std::bad_alloc表示程序无法分配您希望分配的内存。根据您的系统和编译器,150000000个整数具有600 MiB或1.2 GiB的大小。分配这一大小的单块内存可能超出了您的操作系统/系统的功能,因此难怪它失败了。您将需要使用另一个数据结构,而不是一个巨大的数组。