如何避免c++中由于内存溢出而导致的错误消息

How to avoid error messages in c++ caused by memory overflow

本文关键字:溢出 消息 错误 内存 c++ 何避免 于内存      更新时间:2023-10-16

我有一个c++程序,有时会因为内存溢出而崩溃(最大内存为2GB,在某些情况下程序只需要更多…)。

我知道这一点,并且我希望程序像那样运行(因为某些原因)。

但问题是,该窗口打开一个窗口,显示"程序停止工作…"。

我如何避免这些错误信息,只是让我的应用程序关闭而不告诉任何用户?

如果你使用new分配内存,你可以尝试捕获std::bad_alloc异常

try
{
  buffer = new Type[HUGE_VAL];
}
catch (const std::bad_alloc& e)
{
  gracefulExit();
}

请记住,try &catch可以在顶层某处(例如在main中),而将自身分配到深层处理等。

但是,重新考虑用不同的方式来完成任务——把它分成更小的任务,或者使用一些临时文件等