std::string *stringPtr1 = new std::stirng ;
std::stirng * stringPtr2 =new std::string [100];
...
delete stringPtr1; //删除一个对象
delete [] stringPtr2; //删除一个由对象组成的数组
当你对着一个指针使用delete,唯一能够让delete知道内存中是否存在一个“数组大小记录”的办法就是:由你来告诉它,如果你使用delete时加上中括号,delete便认为指定一个数组,否则便认定指针指向单一对象。
但是如果你对stringPtr1使用“delete []”,结果可能不太愉快,有可能会读取若干内存并将它解析为数组大小,然后多次调用析构函数。
如果你没有对stringPtr2使用“delete[]”形式,结果还是一样没有定义。