堆损坏/坏分配问题立即在主

Heap Corruption / Bad Alloc Issues Immediately in Main

本文关键字:问题 分配 损坏      更新时间:2023-10-16

所以我一直在试图解决我的问题,有一段时间了,虽然我不能发布任何大量的源代码(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。分配如此大小的单个内存块可能超出了您的操作系统的能力,因此失败也就不足为奇了。您将需要使用另一种数据结构,而不是单个巨型数组。