【发布时间】:2010-07-03 07:45:32
【问题描述】:
我有一个包含非托管类指针的托管类:
class Managed { public IntPtr ptr; };
以指针为参数的c++函数:
void foo(void *ptr);
我应该在调用非托管函数之前固定这个托管对象吗?
调用代码:
Managed obj = new Managed;
foo(obj.ptr);
【问题讨论】:
我有一个包含非托管类指针的托管类:
class Managed { public IntPtr ptr; };
以指针为参数的c++函数:
void foo(void *ptr);
我应该在调用非托管函数之前固定这个托管对象吗?
调用代码:
Managed obj = new Managed;
foo(obj.ptr);
【问题讨论】:
我不明白你为什么需要固定它 - 即使 GC 移动 obj 本身,obj.ptr 的值也不应该受到影响 - 并且 obj.ptr 被传递给你的 C++ 代码值,所以它不像C++代码可以尝试改变obj的内容。
【讨论】: