首页 理论教育 解决内存分配错误-大道至简:C++ STL(标准模板库)精解

解决内存分配错误-大道至简:C++ STL(标准模板库)精解

时间:2023-10-25 理论教育 版权反馈
【摘要】:下面分别介绍类中的各个函数。新产生的new_handler类型的句柄应该执行下述的行为之一:1)尽量开辟更多的内存,并返回该内存。2)抛出bad_alloc类型的异常,或者抛出类bad_alloc的派生类的异常。返回值:第一次调用时,函数返回0;通常函数返回值是之前设置的new_handler类型的句柄。

解决内存分配错误-大道至简:C++ STL(标准模板库)精解

类bad_alloc的声明形式为:

类bad_alloc定义了诸多异常对象的类型。这些异常对象是在分配内存失败时所抛出的异常类型对象。下面分别介绍类中的各个函数。

1.bad_alloc()throw()

使用类bad_alloc构造一个对象,bad_alloc()函数恰好是类的构造器。

调用what()函数时,会导致定义所构造的新对象。

2.bad_alloc(const bad_alloc&)throw()

这两个函数的功能是实现完成一个类bad_alloc的备份。

3.virtual const char what()const throw()

函数返回值是一个NTBS。

4.typedef new_handler(www.xing528.com)

new_hanlder()函数产生一个新的句柄。新产生的new_handler类型的句柄应该执行下述的行为之一:

1)尽量开辟更多的内存,并返回该内存。

2)抛出bad_alloc类型的异常,或者抛出类bad_alloc的派生类的异常。

3)调用abort()函数或者exit()函数。

5.set_new_hanlder

其声明形式为:

功能:设置参数new_p指定的函数作为当前的new_handler。

返回值:第一次调用时,函数返回0;通常函数返回值是之前设置的new_handler类型的句柄。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈