【发布时间】:2017-03-16 16:35:54
【问题描述】:
这是我写的一个简单的程序:
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] 只创建了一个对象?
【问题讨论】:
-
你像
delete [] word这样删除数组。 -
您创建的对象数量无关紧要。如果您使用
new[],您必须使用delete[]。 -
如果你不玩指针,我建议改用
std::vector。 -
见here
-
所以
delete ar工作只是巧合?
标签: c++ constructor crash destructor