据我所知,当程序内存不足时,会触发C ++中的std :: bad_alloc异常。 有没有办法监控剩余的内存量,并在我们到达不归路之前触发特殊程序?
答案 0 :(得分:5)
不,但您可以使用std::set_new_handler
注册处理程序,全局operator new()
的默认实现在循环中执行,直到处理程序未返回或没有注册其他处理程序。处理程序本身可能会尝试释放更多内存,或发布日志消息或类似内容。
分配功能可用内存的具体细节在很大程度上取决于您的平台和操作系统,所以不要期望太多。
例如,在超额预订内存的系统上,您的分配可能会成功,但您的程序仍可能因为系统内存不足而死亡。