effective C++ 笔记:条款16 成对使用new和delete时要采取相同形式

这条条款告诉我们,new和delete的成对使用要采取相同形式,如:

string* ptr1 = new string;
string* ptr2 = new string[100];

delete ptr1;           //new的时候只构造了一个string,delete的时候用delete
delete[] ptr2;        //new的时候可能构造了100个string,所以delete的时候要用delete[],调用所有的析构函数

这个规则对于喜欢使用typedef的程序员很重要。

typedef string Address[4];

string* pal = new Address;

delete pal;   //错误
delete[] pal; //正确

要避免这种错误,就是尽量不要对数组使用typedef,所以还是鼓励程序员使用string以及STL库的容器。

你可能感兴趣的:(effective C++ 笔记:条款16 成对使用new和delete时要采取相同形式)