我有一个包含非托管类指针的托管类:
class Managed { public IntPtr ptr; };
c ++函数,它将指针作为参数:
void foo(void *ptr);
我应该在调用非托管函数之前固定这个Managed对象吗?
调用代码:
Managed obj = new Managed;
foo(obj.ptr);
答案 0 :(得分:2)
我不明白为什么你需要固定它 - 即使GC移动obj
本身,obj.ptr
的值不应该受到影响 - obj.ptr
是按值传递给您的C ++代码,因此不像C ++代码可以尝试更改obj
的内容。