gpt4 book ai didi

c++ - 更正代码 c++ 指针和删除

转载 作者:行者123 更新时间:2023-11-30 03:13:23 25 4
gpt4 key购买 nike

我正在解决我正在参加的 C++ 类(class)的一些问题,但我被困在了一些看起来很基础的问题上。

问题是:

Correct the code --

string * p, *q;
q = new string;
p = q;
delete p;
delete q;

我将这段代码输入到我的 IDE 中,它似乎编译和运行正常,但删除 pq 时出现 malloc 错误。我将其更改为仅删除 q,一切运行良好。这是唯一的错误还是我遗漏了什么?

最佳答案

p 被设置为指向内存中 q 指向的同一 std::string 对象。一旦调用delete pstring 对象就会被销毁,它占用的内存块会被程序的内存管理器回收。之后调用 delete q 再次释放同一个对象和内存是未定义的行为,任何事情都可能发生,保证崩溃!每个成功的 new 只允许 1 个 delete

这是智能指针(std::unique_ptrstd::shared_ptr)为您管理的工作,您不应该手动完成。

关于c++ - 更正代码 c++ 指针和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58721103/

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