gpt4 book ai didi

c++ - 删除指针而不是变量

转载 作者:太空宇宙 更新时间:2023-11-04 16:06:02 25 4
gpt4 key购买 nike

据我了解,当你在你使用的堆上分配对象时

Object* dynamicobject = new Object();

当我调用 delete 我去

delete dynamicobject

我很困惑,因为我删除了指向该对象实例的指针,但按照我的思路,您实际上需要删除内存本身中的对象,这需要您取消引用指针,例如 删除*动态对象但这是不正确的。如果要改变指针指向的对象,需要解引用,我假设删除也是如此,但似乎只能删除指针。

最佳答案

如果你这样做

delete *dynamicobject;

delete 运算符的值是动态内存位置中的值,而不是位置本身。 delete 运算符需要知道动态内存的位置,以便回收它。

例如,假设您这样做:

int *dynamic_int = new int;
*dynamic_int = 10;

如果你这样做了:

delete *dynamic_int;

delete 运算符将收到整数值 10。这不提供回收存储该值的动态内存所需的信息。但是如果你这样做

delete dynamic_int;

delete 运算符接收该动态内存的地址,并且可以回收它。

关于c++ - 删除指针而不是变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35190191/

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