gpt4 book ai didi

c++ - 删除数组类型指针的元素导致错误?

转载 作者:行者123 更新时间:2023-12-01 15:13:21 24 4
gpt4 key购买 nike

我有一个例子:

int* arr = new int[1];
//First Time
arr[0] = 5;
cout << &arr[0] << " " << arr[0] << endl;
delete &arr[0];
cout << &arr[0] << " " << arr[0] << endl;

//Second time
arr[0] = 5;
cout << &arr[0] << " " << arr[0] << endl;
delete &arr[0]; //Error from here
cout << &arr[0] << " " << arr[0] << endl;

上面代码的结果:
00529EF0 5
00529EF0 -572662307
00529EF0 5
//Where the code stop

我不知道为什么它会导致我的错误?它不允许我删除 arr[0]第二次,即使第一次成功删除,我为它分配了一个新值。

最佳答案

如果您使用 new[] 动态分配数组, 你必须用 delete[] 删除它,这将释放整个数组。你不能释放单个元素。您的代码具有未定义的行为,因为您使用了 delete而不是 delete[] ,所以任何事情都可能发生。仅仅因为它看起来有效并不意味着它是正确的。

关于c++ - 删除数组类型指针的元素导致错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60841074/

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