forsee std::bad_alloc in C++
forsee std::bad_alloc in C++
据我了解,当程序超出内存时,触发了C 中的bad_alloc例外。有没有办法监视剩下的内存并触发特殊例程,然后我们到达无返回点?
no,但是您可以用std::set_new_handler
注册处理程序,默认实现全局operator new()
在循环中执行,直到处理程序不返回或没有进一步的处理程序注册为止。处理程序本身可以尝试释放更多的内存,或发布日志消息或类似的内容。
但是,您的分配功能可用多少内存的细节在很大程度上取决于您的平台和操作系统,因此不要期望太多。
例如,在超级订阅内存的系统上,您的分配可能会成功,但是您的程序仍然可能死亡,因为系统不在内存中。
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- C++ MFC Libraries in Travis CI
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 有人安装"IITB Simplecpp in mac"吗?
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 如何修复"error: ‘_1’ was not declared in this scope"?
- Softmax Implementation in C++
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- IF-nesting in c++
- Gurobi GRBModel and GRBmodel in C++
- Tensorflow Hub in C++
- Centos7 g++ "to_string is not in a member of std"
- InitializeCriticalSectionEx Not Located In KERNEL32.Dll
- 将 lambda 表达式传递给 std::function in C++
- @CPPFLAGS@在 Makefile.in 中意味着什么?
- std::async from std::async in windows xp