条款16:成对使用new和delete时形式应该相同

来源:互联网 发布:unity3d 特效插件 编辑:程序博客网 时间:2024/06/05 06:26

    当你使用new时,有两件事情会发生,第一:内存被分配出来

                                                        第二:针对此内存会有一个构造函数被调用

    当你使用delete时,也会有两件事情会发生, 第一:针对此内存有一个析构函数被调用

                                                                  第二:释放内存

 

    而使用delete的最大问题是:即将被删除的内存之内究竟有多少对象?这个问题决定了有多少个析构函数必须被调用!

 

    这里主要说的是单一对象和对象数组的问题,与单一对象不同,数组所用的内存通常还记录了数组的大小。

    使用delete时,唯一能知道存在着“数组大小记录”的方法是detele[]。

 

    总结:成对出现new和delete用相同的形式,若在new表达式中使用[],必须在相应的delete表达式中也使用[],如果在new表达式中不使用,则一定不要在delete中使用。