成对使用new和delete时要采取相同形式

来源:互联网 发布:雷锋的故事 知乎 编辑:程序博客网 时间:2024/05/22 10:53
  1. 如果在new表达式中使用[],那么必须在相应的delete表达式中也使用[];
  2. 如果在new表达式中不使用[],一定不要在相应的delete表达式中使用[]。
    如果没有按照要求会发生什么呢,按照effective C++所讲,二者皆会得到未定义的结果,对于1:可能会导致太少的析构函数被调用,furthermore,对内置类型如int者也未有定义(甚至有害),即使其没有析构函数。
    对于2:delete会读取若干内存并将它解释为数组大小,然后开始多次调用析构函数,浑然不知它所处理的那块内存不但不是个数组,也或许并未持有忙着销毁的那种类型的对象。
阅读全文
0 0
原创粉丝点击