gpt4 book ai didi

c++ - 当多个指针指向一个对象时删除它?

转载 作者:可可西里 更新时间:2023-11-01 18:14:58 25 4
gpt4 key购买 nike

有人告诉我,如果我有多个指针指向同一个对象,我将无法正常删除它(使用 delete 关键字)。相反,我被告知我需要将指针设置为 NULL 或 0。

鉴于我有:

ClassA* object = new ClassA();
ClassA* pointer1 = object;
ClassA* pointer2 = object;

那么要删除pointer1pointer2,我需要做以下操作吗?

pointer1 = 0;
pointer2 = 0:

一旦我将它设置为 NULL,我还需要使用关键字 delete 吗?还是仅仅将其设置为 0 就足够了?

最佳答案

每当您新建一个对象时,您都需要删除它,释放内存

ClassA* object = new ClassA();

delete object; // Free's the memory you allocated.

将指针设置为 NULL 的目的是停止取消引用 无效 的指针

object = NULL;

这样做是为了在尝试取消引用之前执行测试:

if(object != NULL)
{
object->SomeMethod(); // We can assume it's safe to use the pointer.
}

另请注意,您可以从指向它的任何指针删除内存。

ClassA* object = new ClassA();
ClassA* pointer1 = object;
ClassA* pointer2 = object;

delete pointer1;

object,pointer1,and pointer2现在指向已经释放的内存,除非重新定义,否则都应该设置为

关于c++ - 当多个指针指向一个对象时删除它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12036478/

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