Hi,
I am using a COM component which provides a function like
GetBitmapData(out BYTE* pData, out long *pLen), in which it allocates
the memory using "new" and returns the pointer and length of memory
block.
i am calling this functon in C# in following way...
int pImageBuffer = 0;
int len = 0;
m_COMAdapter.GetBitmapData(ref pImageBuffer, out len);
IntPtr ImageData = new IntPtr(pImageBuffer);
//I use IntPtr
//Now I need to free up the memory allocated by GetBitmapData()
I am not sure how i can free up the memory here?
I tried Marshal.FreeCoTaskMem(ImageData), but its not helping and i am
sure if it is the correct way...
thx,
m...
Micky Duncan - 30 Jul 2007 03:50 GMT
Hi,
If your COM object allocates the data then it should be the one that frees
it too. Add a method called FreeBitmapData() or something on the COM object.
This is actually a good practice from the days of c++ DLLs where memory is
allocated and shared amonst the DLL's clients. Clients don't free the data
but rather the one who allocated it in the first place - the DLL
Cheers,
Micky
> Hi,
>
[quoted text clipped - 19 lines]
> thx,
> m...