c++中的内存空间不足和自定义处理内存不足
2024-10-16 11:47:19
new操作符动态分配内存时,首先它会调用对象的operator new()函数分配相应大的内存(如果对象类没有重载operator new()函数,则默认调用<new>头文件里的operator new()函数分配内存);接着调用对象的构造函数,初始化这块内存;最后返回指向该内存块的指针。
当分配内存时,如果内存空间不够用,则分配函数会默认抛出bad_allco类型异常,供用户接收并处理。另外,我们还能自己定义如何处理空间不足,用一个函数指明该如何处理内存不足。下面这个例子中,必然会导致内存不足,我用set_new_handler()指定一个自定义函数去处理内存不足问题,之后,分配内存不足时,不会默认抛出bad_allco()异常,而是去执行我定义的函数,我定义的函数在输出信息后又抛出了异常(当然这个函数你可以随便写)。
#include <iostream>
//#include <new>
using namespace std;
void out_of_store()
{
cerr << "my bad_alloc\n";
throw bad_alloc();
}
int main()
{
set_new_handler(out_of_store);
try {
for (;;)
new char[10000];
}
catch (bad_alloc) {
cerr << "Memory exhausted! \n";
}
system("PAUSE");
return 0;
}
最新文章
- 【干货分享】前端面试知识点锦集03(JavaScript篇)——附答案
- OpenCv ROI操作
- The specified framework &#39;Microsoft.NETCore.App&#39;, version &#39;1.0.1&#39; was not found 解决办法
- Elmah 日志记录组件
- [Xamarin.Android] ActionBar Tips
- LINUX信息安全系统设计基础第二周学习总结
- Change ICON of MFC Application and Dialog
- Selenium2Library系列 keywords 之 _SelectElementKeywords 之 select_all_from_list(self, locator)
- unity3d脚本编程
- 重写DataGridViewColumn
- 自己寫的 Loading JS插件
- Linux修改时间时区并在Tomcat中生效
- javascript权威指南pdf
- FTP出现PORT模式成功, 请更新你的站点配置文件
- PHP 中的Trait
- java下载Excel模板(工具类)
- A1123. Is It a Complete AVL Tree
- JS控制只能输入数字并且最多允许小数点两位
- async函数对比Generator函数
- vue 引用公共方法(例子:截取字符串固定字数,其余显示...)