Как использовать IMalloc :: Free? - PullRequest
1 голос
/ 20 июня 2010

Я использую метод ICommandText :: GetCommandText. Согласно документации MSDN (http://msdn.microsoft.com/en-us/library/ms709825(v=VS.85).aspx) мне нужно использовать IMalloc :: Free для освобождения памяти, выделенной для выходного параметра LPOLESTR * ppwszCommand.

Как мне использовать этот интерфейс для этого?

Ответы [ 2 ]

3 голосов
/ 21 июня 2010

Просто передайте его CoTaskMemFree, он оборачивается тем же распределителем OLE по умолчанию, который выставляет CoGetMalloc.

CoTaskMemAlloc/Free - это удобные ярлыки для интерфейса IMalloc стандартного распределителя OLE, так что вы можете вообще пропустить громоздкий интерфейс.

1 голос
/ 21 июня 2010

Сначала вам нужно получить указатель IMalloc* - для этого используйте CoGetMalloc(). После того, как вы получили IMalloc* указатель вызова IMalloc::Free(), передав адрес блока, который вы хотите освободить. Как только вы закончили с указателем IMalloc*, вызовите IMalloc::Release() на указателе или сохраните его где-нибудь, чтобы снова использовать и освободить, когда он вам больше не нужен.

...