C++ 错误的分配应用程序失败

c++ bad alloc applicaition failure

本文关键字:应用程序 失败 分配 错误 C++      更新时间:2023-10-16

>我有一段代码,我在其中动态创建一些相对较大的对象(14MB(并用它们填充一个向量(大小为260(。我正在捕获一个错误的分配异常。该应用程序在我第一次抛出后仍然可用,然后当我重新启动它时,再次抛出错误的 alloc 异常,但该应用程序不再可用。 您是否知道是否有办法即使在抛出异常后也能保持其可用(无论抛出多少次(。

谢谢

现在,260个14Mb对象的数组将需要大约4Gb的RAM。棘手的部分是它必须是一个实心块。因此,即使可用 RAM 量足够,它也可能由于内存碎片而不可用。您应该尝试使用不连续的容器,例如std::list代替或std::vector<std::unique_ptr<obj_t>>。无论引发异常的次数如何(假设它们被捕获(,应用程序都是可用的。随着分配粒度的提高,分配内存失败的可能性应该更小。