我有一個簡單的類與字符串指針和大小整數。它的構造函數將大小設置爲0,並指向新字符串[0];當我嘗試用delete []破壞字符串*時,程序崩潰。C++數組的字符串析構函數
#include<string>
using std::string;
class Strarr {
private:
string *items;
int size;
public:
Strarr() {
items = new string[0];
size = 0;
}
~Strarr() {
delete[] items;
}
};
int main() {
Strarr test;
test.~Strarr();
}
有人能解釋一下這裏發生了什麼嗎?
請告訴我們是誰教你的,你應該手動調用析構函數。然後我可以打電話給一個能「修復」事情的人。 –
再次考慮這個循環,並記住'size'是'0'。如果'size'是你真實代碼中的其他東西,那麼當你嘗試'刪除'你沒有'new'的東西時,你有*未定義的行爲。 –
你知道,我不會手動調用析構函數。我只是這樣做,以顯示發生了什麼。 – user2867253