这是关于正确使用 HANDLE 的一个非常基本的问题。给定以下代码(它不是特定的源文件):
typedef void* HANDLE;
HANDLE myHandle;
myHandle = SomeObject;
//...some elaborate code...//
第一个问题:myHandle 现在位于堆栈还是堆上?由于 Handle 既可以是指针也可以是索引,我对此不太确定。
在 myHandle 超出范围时,它被删除(至少我认为是这样)。但是如果它是一个类成员,它会一直可见,直到拥有的对象被删除。所以第二个问题:
如果我想避免进一步访问 myHandle,这样做是一种好习惯吗
myHandle = 0; // I do not need this handle anymore
我现在会遇到内存管理冲突,还是与托管代码有关的任何其他限制?是否有其他选项可以声明不应再使用此句柄,类似于指针:
mypointer = NULL;
编辑:我首先谈论的是垃圾收集,这显然不包含在 c++ 中。这是托管扩展的一部分。感谢您帮助我解决这个致命错误!