我有一个C ++程序,由于内存溢出有时会崩溃(最大内存为2GB,在某些情况下程序只需要更多......)。
我知道这一点,我希望程序表现得那样(因为原因)。
但事实是,Windows会打开一个窗口,其中“程序停止工作......”。
如何在不向用户说明任何内容的情况下避免这些错误消息并让我的应用程序关闭?
提前致谢。
答案 0 :(得分:1)
如果使用new
分配内存,则可以尝试捕获std::bad_alloc异常
try
{
buffer = new Type[HUGE_VAL];
}
catch (const std::bad_alloc& e)
{
gracefulExit();
}
请记住,try
& catch
可以位于顶层(例如main
),而在处理等内部进行深度分配。
仍然,重新考虑以不同的方式完成任务 - 将其拆分为较小的任务,或使用一些临时文件等。