這是一個簡單的程序中,我寫道:刪除導致意外崩潰
using namespace std;
int main() {
string *word = new string[1]; //create a string object
*word = "blablabla"; //assign a string to that object
cout << "String: " << *word << endl;
delete word; //delete object? Causes unexected crash
int *ar = new int [10]; //create array of 10 blocks
ar[3] = 4; //assign a value to bl-3
cout << ar[3] << endl;
delete ar; //delete object, works
return 0;
}
從迄今我瞭解
現在,一個使用delete
與new
(如在我創建刪除一個對象)和delete[]
與new[]
(刪除並創建一個對象數組)。問題是前者delete
導致我的程序崩潰,而後者正常工作。然而,做delete[] word
的作品。
那麼我如何創建一個對象數組?我是否認爲string *word = new string[1]
只創建一個對象?
您刪除這樣的陣列'刪除[word'。 –
您創建的對象數量無關緊要。如果你使用'new []'你必須**使用'delete []'。 – NathanOliver
如果你不玩指針,我會建議使用'std :: vector'來代替。 –