effective C++ 笔记:条款16 成对使用new和de
2018-08-22 本文已影响0人
jun_hinokeso
这条条款告诉我们,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库的容器。