您的位置:首页 > 编程语言 > C语言/C++

effective c++成对使用new 和 delete时要采取相同形式

2015-10-26 11:16 387 查看
string *str1 = new string;
delete str1;//删除一个对象
string *str2 = new string[100];
delete []str2;//删除一个由对象组成的数组


如果使用delete[] str1或者delete str2都是未定义的

数组所用的指针通常还包括数组大小的记录,以便delete知道需要调用多少次析构函数

编译器往往会这么实现对象数组

nobjectobjectobjectobject
typedef string AddressLine[4];
int main()
{
string* p = new AddressLine;
delete []p;//great
//delete p;行为未定义
//最好尽量不要对数组形式做typedef动作
//可以尝试用vector代替
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  delete typedef new 条款16