将托管类中包含的非托管指针字段传递给非托管代码
Posted
技术标签:
【中文标题】将托管类中包含的非托管指针字段传递给非托管代码【英文标题】:passing unmanaged pointer field contained in managed class to unmanaged code 【发布时间】:2010-07-03 07:45:32 【问题描述】:我有一个包含非托管类指针的托管类:
class Managed public IntPtr ptr; ;
以指针为参数的c++函数:
void foo(void *ptr);
我应该在调用非托管函数之前固定这个托管对象吗?
调用代码:
Managed obj = new Managed;
foo(obj.ptr);
【问题讨论】:
【参考方案1】:我不明白你为什么需要固定它 - 即使 GC 移动 obj
本身,obj.ptr
的值也不应该受到影响 - 并且 obj.ptr
被传递给你的 C++ 代码值,所以它不像C++代码可以尝试改变obj
的内容。
【讨论】:
以上是关于将托管类中包含的非托管指针字段传递给非托管代码的主要内容,如果未能解决你的问题,请参考以下文章