gpt4 book ai didi

c++ - 删除导致意外崩溃

转载 作者:行者123 更新时间:2023-12-02 02:43:41 26 4
gpt4 key购买 nike

这是我编写的一个简单程序:

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;
}

现在,据我所知,到目前为止,人们将 deletenew 一起使用(如删除我创建的一个对象)和 delete[]new[] (删除并创建对象数组)。问题是前者删除导致我的程序崩溃,而后者工作正常。不过,delete[] word 是有效的。

那么我如何创建对象数组呢?我是否错误地认为 string *word = new string[1] 仅创建一个对象?

最佳答案

So how am I creating an array of objects? Am I mistaken in thinking that string *word = new string[1] creates just one object?

有点。

您正在创建一个包含 1 个对象的数组。

您正在创建一个对象。这是真的。您仍在创建数组。

因此,您需要使用delete []表单。

delete [] word;

delete [] ar;

关于c++ - 删除导致意外崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42839847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com