代码之家  ›  专栏  ›  技术社区  ›  Benny

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

  •  0
  • Benny  · 技术社区  · 15 年前

    class Managed { public IntPtr ptr; };
    

    以指针为参数的c++函数:

    void foo(void *ptr);
    

    我应该在调用非托管函数之前锁定此托管对象吗?

    呼叫代码:

    Managed obj = new Managed;
    foo(obj.ptr);
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   Jon Skeet    15 年前

    我不明白你为什么要把它钉住-即使GC动了 obj 它本身的价值 obj.ptr 不应该受到影响-而且 目标ptr 通过值传递给C++代码,所以它不像C++代码可以尝试更改内容 .