如何避免c++中由于内存溢出而导致的错误消息
How to avoid error messages in c++ caused by memory overflow
我有一个c++程序,有时会因为内存溢出而崩溃(最大内存为2GB,在某些情况下程序只需要更多…)。
我知道这一点,并且我希望程序像那样运行(因为某些原因)。
但问题是,该窗口打开一个窗口,显示"程序停止工作…"。
我如何避免这些错误信息,只是让我的应用程序关闭而不告诉任何用户?
如果你使用new
分配内存,你可以尝试捕获std::bad_alloc异常
try
{
buffer = new Type[HUGE_VAL];
}
catch (const std::bad_alloc& e)
{
gracefulExit();
}
请记住,try
&catch
可以在顶层某处(例如在main
中),而将自身分配到深层处理等。
但是,重新考虑用不同的方式来完成任务——把它分成更小的任务,或者使用一些临时文件等
相关文章:
- boost::进程间消息队列引发错误
- 在线编译器中的分段C++没有打印消息
- C++错误消息*成员参考.**初学者*
- 'short int'持有的值溢出,但"自动"不会溢出?
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 大于65535的C++数组[size]引发不一致的溢出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 为什么我在leetcode上收到AddressSanitizer:地址0x602000000058上的堆缓冲区溢出错误
- C++中无符号字符溢出
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 如何通过参数抛出错误消息
- 从服务器传输到客户端的消息不会出现
- ROS2 动态消息模板
- C++秘密消息学校作业
- glad 导致 glfwSwapBuffers 返回错误消息
- C++入门 5 版:类消息和文件夹
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 应该如何读取堆缓冲区溢出错误消息?
- 奇怪的消息 (_Base_bitset::_M_do_to_ulong) 从溢出异常处理程序中打印出来
- 如何避免c++中由于内存溢出而导致的错误消息