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

记住:

  • 如果你在new表达式中使用[ ],必须在相应的delete表达式中也是用[ ]。如果你在new时不使用[ ],一定不要在delete时使用[ ]。
string* stringPtr1 = new string;
string* stringPtr2 = new string[100];
...
delete stringPtr1;   //删除一个对象
delete[] stringPtr2; //删除一个由对象组成的数组

 
最好不要用数组形式做typedef,基本都可以使用vector之类的

typedef string AddressLines[4];

string* pal = new AddressLines; //注意,这里相当于 new string[4]
...
delete pal; //行为为定义
delete[] pal; //正确

 




posted @ 2018-06-23 11:46  pfsi  阅读(117)  评论(0编辑  收藏  举报