条款5:对应的new和delete要采用相同的形式
看下面例子:
string* Arr = new string[100];
.....
delete Arr;
这样做的话,Arr[100]指向的至少99个对象没有被成功释放,因为析构函数没有被成功的调用。
正确做法是:
delete[] Arr;
如果没有正确使用相同的形式,结果是不可预测的。
使用typedef的同学需要注意下,要看到问题的本质,这么做才是正确的。
typedef string Arr[4];
string *pal = new Arr;
...
delete[] pal;
但是我们最好杜绝在typedef使用数组,容易混乱。
尽量使用string和vector模板。