string *str1 = new string;
delete str1;//删除一个对象
string *str2 = new string[100];
delete []str2;//删除一个由对象组成的数组
如果使用delete[] str1或者delete str2都是未定义的
数组所用的指针通常还包括数组大小的记录,以便delete知道需要调用多少次析构函数
编译器往往会这么实现对象数组
n | object | object | object | object |
---|
typedef string AddressLine[4];
int main()
{
string* p = new AddressLine;
delete []p;//great
//delete p;行为未定义
//最好尽量不要对数组形式做typedef动作
//可以尝试用vector代替
}