我正在使用ICommandText :: GetCommandText方法。 根據MSDN文檔(http://msdn.microsoft.com/en-us/library/ms709825(v=VS.85).aspx),我需要使用IMalloc :: Free釋放分配給LPOLESTR * ppwszCommand輸出參數的內存。如何使用IMalloc :: Free?
如何使用此界面來做到這一點?
我正在使用ICommandText :: GetCommandText方法。 根據MSDN文檔(http://msdn.microsoft.com/en-us/library/ms709825(v=VS.85).aspx),我需要使用IMalloc :: Free釋放分配給LPOLESTR * ppwszCommand輸出參數的內存。如何使用IMalloc :: Free?
如何使用此界面來做到這一點?
只要將它傳遞給CoTaskMemFree
,它將包裝相同的默認OLE分配器CoGetMalloc
正在公開。
CoTaskMemAlloc/Free
是默認OLE分配器的接口IMalloc
的便捷快捷方式,因此您可以完全跳過繁瑣的接口。
您需要首先檢索IMalloc*
指針 - 爲此使用CoGetMalloc()
。一旦你有IMalloc*
指針調用IMalloc::Free()
,傳遞你想要空閒塊的地址。一旦完成指針上IMalloc*
指針的調用IMalloc::Release()
,或者將其保存在某處以便在不再需要時重用和釋放。
很酷,但是有沒有任何參考確認CoTaskMemFree()和IMalloc :: Free()是一樣的? – sharptooth 2010-06-22 06:01:42
Raymond Chen對內部進行了解釋和更多解釋:http://blogs.msdn.com/b/oldnewthing/archive/2004/07/05/173226.aspx – wqw 2010-06-22 08:19:46
很酷,感謝您的聯繫。 – sharptooth 2010-06-23 08:36:36