条款 16:成对使用 new 和 delete 是要采用相同形式

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

Use the same form in corresponding uses of new and delete.

std::string * stringArray = new std::string[100];
delete stringArray;

上面程序会产生未定义行为,至少后 99 个 string 的析构函数不会被调用,需要成对使用 new/delete 和 new []/delete []
需要注意尽量减少下列 typedef 申明,容易在释放资源时引起问题

typedef std::string AdressLines[4];
std::string* pal new AdressLines;

delete pal; // 行为未定义
delete [] pal; // 没问题

你可能感兴趣的:(Effective,C++,C++,new,delete)