将托管类中包含的非托管指针字段传递给非托管代码

时间:2010-07-03 07:45:33

标签: c# unmanaged

我有一个包含非托管类指针的托管类:

class Managed { public IntPtr ptr; };

c ++函数,它将指针作为参数:

void foo(void *ptr);

我应该在调用非托管函数之前固定这个Managed对象吗?

调用代码:

Managed obj = new Managed;
foo(obj.ptr);

1 个答案:

答案 0 :(得分:2)

我不明白为什么你需要固定它 - 即使GC移动obj本身,obj.ptr的值不应该受到影响 - obj.ptr是按值传递给您的C ++代码,因此不像C ++代码可以尝试更改obj的内容。