这是一个简单的程序中,我写道:删除导致意外崩溃
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'来代替。 –