我想在托管代码中执行Marshal.AllocHGlobal
,用数据填充它,然后将该内存块传递给非托管(C ++)代码,然后负责释放它。
在幕后,Marshal.AllocHGlobal
拨打LocalAlloc
(我猜,LocalLock
)。但是为了让非托管代码调用LocalFree,它需要LocalAlloc
返回的HLOCAL,Marshal.AllocHGlobal
不提供。
我不一定限于使用AllocHGlobal
;高级目标是让托管代码分配非托管代码的内存,然后读取并释放。
答案 0 :(得分:0)
这不是一个句柄,不是自Windows版本3.在指针上调用LocalFree()就好了,正如Windows SDK article在其示例中所示。 Marshal.AllocCoTaskMem和CoTaskMemFree()是更好的鼠标陷阱。