条款8:写operator new和operator delete时要遵循常规

来源:互联网 发布:ubuntu查看系统分区 编辑:程序博客网 时间:2024/06/15 15:45
自己重写operator new时,很重要的一点是函数提供的行为要和系统缺省的operator new一致。实际做起来也就是:要有正确的返回值;如果内存分配请求成功,就返回指向内存的指针;如果失败,抛出一个std::bad_alloc类型的异常。

   但是事情也不是那么简单,因为operator new实际上会不只一次地尝试着去分配内存,它要在每次失败后调用出错处理函数,还期望出错处理函数能想八方释放别处的内存。只有在指向出错处理函数的指针为空的情况下,operator new才抛出异常。

   operator new经常会被子类继承,这会导致某些复杂性。

原创粉丝点击