47d*_*7d_ 9 c# pinvoke interop
如何释放ptrSentFromPinvokedDLL?
IntPtr ptrSentFromPinvokedDLL= IntPtr.Zero;
int resultFromVendor = CallVendorDll(ref ptrSentFromPinvokedDLL);
resultFromVendor = DoMoreWorkFromVendorDLL(
ptrSentFromPinvokedDLL, "workonthis");
// Free ptrSentFromPinvokedDLLhere
Run Code Online (Sandbox Code Playgroud)
jas*_*son 10
理想情况下,供应商担心这一点,或者会有供应商功能来解除内存.如果没有,您需要知道供应商如何分配内存.例如,如果供应商使用LocalAlloc
in 分配内存,kernel32.dll
则可以使用释放内存Marshal.FreeHGlobal(IntPtr)
.类似地,如果使用COM内存分配器CoTaskMemAlloc
,那么Marshal.FreeCoTaskMem(IntPtr)
将用于释放内存.因此,请检查文档并相应地继续.