C++利用new_handler()函数处理异常
来源:互联网 发布:源代码java教学视频 编辑:程序博客网 时间:2024/06/01 10:21
C++利用new_handler()函数处理异常
C++规定,new_handler要执行下述操作中的一种:
(1)使new有更多的内存使用,然后返回
(2)抛出一个bad_alloc异常或者其派生异常
(3)调用abort或者exit退出
下面举例说明,程序通过VS2008编译运行
#include <iostream>
#ifndef NUL
#define NUL '\0'
#endif
char* gPool = NULL;
void my_new_handler(void);//内存分配失败时调用这个函数
int main(void)
{
std::set_new_handler(my_new_handler);
try
{
gPool = new char[100*1<<20];
printf("alloc 100M memory for gPool! %#x\n",gPool);
}
catch ( ...)//用catch捕获异常
{
printf("gPool alloc memory failed!\n");
throw std::bad_alloc();
}
char* p = NULL;
for (int i = 0;i<20;++i)
{
p = new char [100*1<<20];
printf("alloc %dM memory for p!\n",(i+1)*100 );
}
printf("done...\n");
return NULL;
system("pause");
}
void my_new_handler(void)//用new_handler捕获异常并处理
{
if (gPool != NULL)
{
printf("try to get memory....\n");//帮助系统获得更多内存
delete [] gPool;
gPool = NULL;
return ;
}
else
{
printf("i can't help more...\n");
throw std::bad_alloc();
return ;
}
}
- C++利用new_handler()函数处理异常
- operator new之错误处理函数new_handler
- 一个利用oracle异常处理的函数
- new_handler
- new_handler
- C语言中利用setjmp和longjmp做异常处理
- C语言中利用setjmp和longjmp做异常处理
- C语言中利用setjmp和longjmp做异常处理
- C语言利用setjmp和longjmp实现异常处理
- 【Effective C++】为类设计new_handler
- C语言中异常处理的两个函数
- c语言中的异常处理,setjmp 与 longjmp函数
- 利用spring aop 处理异常
- Linux下利用signal函数处理ctrl+c等信号
- php异常处理函数
- _set_invalid_parameter_handler异常处理函数
- win32异常处理函数
- signal函数异常处理
- struts2工作机制
- 国内HTML5前端开发框架汇总
- 在 Visual Studio 中使用 mdk 编译 ARM 程序
- samba进程
- 转:不同的行业和工作的真实情况是怎样的?
- C++利用new_handler()函数处理异常
- HDU 3003 Pupu
- 存储过程,怕忘,先留下来
- 单内核OS与微内核OS结构比较
- 自己动手,制作inline hook扫描工具
- glMatrixMode()函数和glLoadIdentity()函数
- L4Linux的版本比较
- 10年跳槽经验总结 高级人才不用找工作
- jdk与jre的区别