How to use IMalloc::Free?

随声附和 提交于 2019-12-13 00:05:10

问题


I'm using ICommandText::GetCommandText method. According to the MSDN documentation (http://msdn.microsoft.com/en-us/library/ms709825(v=VS.85).aspx) I need to use IMalloc::Free to release the memory allocated for LPOLESTR *ppwszCommand output parameter.

How do I use this interface to do that?


回答1:


Just pass it to CoTaskMemFree, it's wrapping the same default OLE allocator CoGetMalloc is exposing.

CoTaskMemAlloc/Free are convenient shortcuts to IMalloc interface of the default OLE allocator so you can skip the cumbersome interface altogether.




回答2:


You'll need to retrieve an IMalloc* pointer first - use CoGetMalloc() for that. Once you've got an IMalloc* pointer call IMalloc::Free(), passing the address of the block you want to free. Once you've finished with the IMalloc* pointer call IMalloc::Release() on the pointer or save it somewhere to reuse and free when you no longer need it.



来源:https://stackoverflow.com/questions/3079508/how-to-use-imallocfree

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!