从非托管代码中释放托管内存分配



我想在托管代码中做Marshal.AllocHGlobal,用数据填充它,并将该内存块传递给非托管(c++)代码,然后负责释放它。

在引擎盖下,Marshal.AllocHGlobal调用LocalAlloc(和,我猜,LocalLock)。但是为了让非托管代码调用LocalFree,它需要LocalAlloc返回的HLOCAL, Marshal.AllocHGlobal不提供。

我不一定局限于使用AllocHGlobal;高级目标是让托管代码分配内存,然后让非托管代码读取和释放。

这不是句柄,从Windows版本3开始就不是。在指针上调用LocalFree()是可以的,正如Windows SDK文章在其示例中所示。元帅。在这里,AllocCoTaskMem和CoTaskMemFree()是更好的捕鼠器

相关内容

  • 没有找到相关文章

最新更新