C++ 错误的分配应用程序失败
c++ bad alloc applicaition failure
>我有一段代码,我在其中动态创建一些相对较大的对象(14MB(并用它们填充一个向量(大小为260(。我正在捕获一个错误的分配异常。该应用程序在我第一次抛出后仍然可用,然后当我重新启动它时,再次抛出错误的 alloc 异常,但该应用程序不再可用。 您是否知道是否有办法即使在抛出异常后也能保持其可用(无论抛出多少次(。
谢谢
现在,260个14Mb对象的数组将需要大约4Gb的RAM。棘手的部分是它必须是一个实心块。因此,即使可用 RAM 量足够,它也可能由于内存碎片而不可用。您应该尝试使用不连续的容器,例如std::list
代替或std::vector<std::unique_ptr<obj_t>>
。无论引发异常的次数如何(假设它们被捕获(,应用程序都是可用的。随着分配粒度的提高,分配内存失败的可能性应该更小。
相关文章:
- C++ 错误的分配应用程序失败
- MXE Qt5 应用程序构建在 Docker 容器中失败
- 程序'main.exe'运行失败:指定的可执行文件不是此操作系统平台的有效应用程序
- 基于CMAKE的CUDA应用程序的构建失败 - 没有传递给链接器的文件
- 如果应用程序从安装选项启动,则加载库失败,错误代码为 126
- 添加新对话框后,MFC 应用程序启动失败并"DLL Initialization Failed"
- 使用Outlook 2016:MAPISendMail在Windows应用程序中失败,并返回"MAPI_E_FAILURE"作为错误代码
- 当在64箱计算机中使用32个bin应用程序时,terminateProcess()失败
- LoadLibrary失败带有错误4250:此操作仅在应用程序容器的上下文中有效
- .Net应用程序SideBySide加载失败COMException(0x80040154)
- libcurl错误失败的写作已接收到磁盘/应用程序的数据
- MFC功能区接口在本地化应用程序时发出断言失败
- 什么可能导致应用程序在工作几个小时后锁定获取 SIGABRT 失败
- 从注入的dll调用BeginPaint时失败,即使在目标应用程序中调用了EndPaint之后也是如此
- SQL SP在SSMS中正常工作,但在VC++应用程序中失败
- 在应用程序中检查互联网连接C++可靠方法:gethostbyname() 失败
- 在QT框架中编译比特币-QT应用程序时断言失败错误
- 在Mac OSX上为i386目标构建Apache Thrift应用程序失败
- Crypto++导致应用程序失败
- c++应用程序失败-没有错误