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

来源:互联网 发布:制作动漫人物的软件 编辑:程序博客网 时间:2024/06/05 15:22
string *str1 = new string;delete str1;//删除一个对象string *str2 = new string[100];delete []str2;//删除一个由对象组成的数组

如果使用delete[] str1或者delete str2都是未定义的
数组所用的指针通常还包括数组大小的记录,以便delete知道需要调用多少次析构函数
编译器往往会这么实现对象数组

n object object object object
typedef string AddressLine[4];int main(){    string* p = new AddressLine;    delete []p;//great    //delete p;行为未定义    //最好尽量不要对数组形式做typedef动作    //可以尝试用vector代替}
1 0