系统内存不足的处理方案?

当operator new没有能力申请到所需要的空间时,通常会丢一个exception(异常类)打印出信息。

常见的 C 习惯做法
定义一个与型别无关的宏,用来配置内存,并做检查,以确定配置成功。

对于C++而言的宏如下
#define NEW(PTR,TYPE)
	try{ (PTR)=new TYPE;}
	catch(std::bad_alloc&)  { assert(0); }

他有一个专属C++的缺点:

他没有把new的使用方法纳入考虑,T类型有三个常见的语法形式,需要你处理没每一种
形式发生exceptions的可能性
new T;
new T(构造);
new T[size];

错误处理策略:
当内存需求无法获得满足,让系统调用一个你所指定的函数。
即(当operator new无法满足需求时,它会在抛出exception之前先调用一个client专属的错误处理函数)-new_handler函数

new_handler(内存处理不足函数)

set_new_handler 函数来自头文件 <new>  
new_handler是函数指针, 没有参数和返回值。->指向内存不足时,调用的函数
set_new_handler是个函数,new_handler是参数和返回值。
例如:new_handler   set_new_handler(new_handler p) throw();

set_new_handler的使用

void noMoreMemory()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值