【问题标题】: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);

【问题讨论】:

    标签: c# unmanaged


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多