c++中如何避免内存溢出引起的错误信息
How to avoid error messages in c++ caused by memory overflow
我有一个 C++ 程序有时会因为内存溢出而崩溃(最大内存为 2GB,在某些情况下程序只需要更多...)。
我知道,并且我希望程序能够像那样运行(出于某些原因)。
但问题是,windows 用 "Program stops working..." 打开了一个 window。
如何避免这些错误消息并让我的应用程序关闭而不告诉用户任何信息?
提前致谢。
如果您使用 new
分配内存,您可以尝试捕获 std::bad_alloc 异常
try
{
buffer = new Type[HUGE_VAL];
}
catch (const std::bad_alloc& e)
{
gracefulExit();
}
请记住,try
和 catch
可以在顶层的某个地方(例如 main
),而分配本身在处理等深处
不过,请重新考虑以不同的方式完成您的任务 - 将其拆分为更小的任务,或使用一些临时文件等。
我有一个 C++ 程序有时会因为内存溢出而崩溃(最大内存为 2GB,在某些情况下程序只需要更多...)。
我知道,并且我希望程序能够像那样运行(出于某些原因)。
但问题是,windows 用 "Program stops working..." 打开了一个 window。
如何避免这些错误消息并让我的应用程序关闭而不告诉用户任何信息?
提前致谢。
如果您使用 new
分配内存,您可以尝试捕获 std::bad_alloc 异常
try
{
buffer = new Type[HUGE_VAL];
}
catch (const std::bad_alloc& e)
{
gracefulExit();
}
请记住,try
和 catch
可以在顶层的某个地方(例如 main
),而分配本身在处理等深处
不过,请重新考虑以不同的方式完成您的任务 - 将其拆分为更小的任务,或使用一些临时文件等。