我正在使用GCHandle :: FromIntPtr将非托管结构指针转换为托管对象引用,请参见msdn中的示例。以下是我的代码片段:我应该释放从GCHandle :: FromIntPtr返回的句柄吗?
GCHandle gch = GCHandle::FromIntPtr(IntPtr(someNativePtr));
MyManagedClass^ obj = static_cast<MyManagedClass^>(gch.Target);
我的问题是我应该自由gch?
UPDATE: 有一个巨大的问题,在这个问题上,正如Medinoc在他的评论中提到:的GCHandle :: FromIntPtr可以不接受一个IntPtr指向非托管对象!所以这个问题完全没有意义。
@Medinoc,thx,我在哪里可以找到刚刚提到的文档? – SimonFisher
@ Medinoc,我不认为msdn的例子真的意味着我们只能使用FromIntPtr和ToIntPtr返回的intptr。 – SimonFisher
MSDN文档并没有说你可以从一个随机的IntPtr中毫不费力地创建一个GCHandle,它甚至不指向一个托管对象。它说你可以将GCHandle转换为IntPtr并将其转换回GCHandle,以便通过非托管函数(通过定义只接受指针或intptr_t类型)将其作为上下文传递。 – Medinoc