forsee std::bad_alloc in C++

forsee std::bad_alloc in C++

本文关键字:in C++ alloc bad std forsee      更新时间:2023-10-16

据我了解,当程序超出内存时,触发了C 中的bad_alloc例外。有没有办法监视剩下的内存并触发特殊例程,然后我们到达无返回点?

no,但是您可以用std::set_new_handler注册处理程序,默认实现全局operator new()在循环中执行,直到处理程序不返回或没有进一步的处理程序注册为止。处理程序本身可以尝试释放更多的内存,或发布日志消息或类似的内容。

但是,您的分配功能可用多少内存的细节在很大程度上取决于您的平台和操作系统,因此不要期望太多。

例如,在超级订阅内存的系统上,您的分配可能会成功,但是您的程序仍然可能死亡,因为系统不在内存中。