new && new(std::nothrow)

来源:互联网 发布:什么软件 看翡翠台 编辑:程序博客网 时间:2024/05/01 21:18

new && new(std::nothrow)

 
转载
源码方面的信息就不详细讲述了,找找代码看看便知,简要说明下:
new(std::nothrow) 顾名思义,即不抛出异常,当new一个对象失败时,默认设置该对象为NULL,这样可以方便的通过if(p == NULL) 来判断new操作是否成功
普通的new操作,如果分配内存失败则会抛出异常,虽然后面一般也会写上if(p == NULL) 但是实际上是自欺欺人,因为如果分配成功,p肯定不为NULL;而如果分配失败,则程序会抛出异常,if语句根本执行不到。

因此,建议在c++代码中,凡是涉及到new操作,都采用new(std::nothrow),然后if(p==NULL)的方式进行判断
0 0
原创粉丝点击