gpt4 book ai didi

c++ - 指向对象方法内部对象的空指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:27:27 25 4
gpt4 key购买 nike

我有一个A类

class A
{
A();
~A();

DoSomething();
}

然后我声明一个对象和一个指向分配对象的指针

A Obj;
A* pObj = &Obj;

我发现在 DoSomething() 中我将 pObj 设置为 NULL

A::DoSomething()
{
pObj=NULL;
}

所以在一个方法中我正在杀死指向我自己的指针...这并没有崩溃...

注意:我注意到在调试器中这是 (Obj const)。

我无法理解为什么这不会导致任何类型的损坏。我认为这不安全,但我无法真正理解其后果。

干杯

最佳答案

So inside a method I am killing the pointer to myself... and this isn't crashing...

绝对没有理由会崩溃。您可以有多个指向一个对象的指针。事实上,您将其中一个或多个重置为 NULL 并不自动意味着应该发生任何不好的事情。

需要注意的两类问题是:

  1. 如果您在将指针设置为 NULL 后尝试取消引用它,您的代码的行为将是未定义的(很可能会崩溃)。
  2. 如果对象分配在堆上(您的不是)并且您重置所有指向它的指针而不调用delete,您将泄漏内存。<

关于c++ - 指向对象方法内部对象的空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14213765/

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