【发布时间】:2011-06-22 01:27:46
【问题描述】:
我在 SharedObject 类中有一个私有引用计数。 SharedObject 是其他类的基类,例如 Window。 Window是Editor的基类。
当 ref 计数达到 0 时,由于调用 SharedObject::Release(),SharedObject 会自行删除。首先我们到Editor的析构函数,这表明this指针包含m_refs == 0,但是当我们到达Window析构函数时它突然变为1,当我们到达SharedObject析构函数时,它仍然是1。
我在 SharedObject::IncRef() 方法上设置了一个断点,但发生这种情况时它从未被调用过。
什么?
【问题讨论】:
-
你能提供更多代码和更多上下文吗?仅从您的描述来看,几乎不可能回答这个问题。
-
确保 IncRef 没有被内联,这会禁用断点。
-
IncRef 未内联,断点有效。但是当编辑器被破坏时该函数不会中断,所以我想它没有被调用。
-
更多代码和上下文.. 不知道具体给出什么。对于游戏引擎来说,这是相当多的代码。我更愿意知道可能出错的可能性。也许是堆损坏?
标签: c++ pointers undefined shared ref