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
理想情况下,供应商担心这一点,或者会有供应商功能来解除内存.如果没有,您需要知道供应商如何分配内存.例如,如果供应商使用LocalAllocin 分配内存,kernel32.dll则可以使用释放内存Marshal.FreeHGlobal(IntPtr).类似地,如果使用COM内存分配器CoTaskMemAlloc,那么Marshal.FreeCoTaskMem(IntPtr)将用于释放内存.因此,请检查文档并相应地继续.
| 归档时间: |
|
| 查看次数: |
9238 次 |
| 最近记录: |