effective c++成對使用new 和 delete時要採取相同形式

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代替
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章