I have a COM component having a MyDataObject class. There is a method with the following signature:
HRESULT MyDataObject::GetData(long Format, VARIANT* retval)
This COM object is used in a .NET application and the method returns either a string or byte array depending on Format value. The returned value is converted to a byte[] in .NET and used.
I suspect this method is leaking memory i.e. The byte array returned from this method needs to be freed up somehow. When I debug the application, I see the GetData(...) method call taking up memory on each call. I am not sure how to free up this memory, Can I change it to hGlobal and then call ReleaseHGlobal(...) or is there any other way?
UPDATED
Yes, I am using Task Manager to see how much memory is being used by the sample application. When I start the application, it stays at 16MB but as soon as I hit the test button to call this GetData(...) method about 850 times, the memory starts increasing and the TaskManager shows the application's memory usage increased by about 25MB.