Re[3]: Проблемы с освобождением памяти клиентом
От: Tom Россия http://www.RSDN.ru
Дата: 23.07.05 12:26
Оценка:
Здравствуйте, okgluck, Вы писали:

O>Здравствуйте, Tom, Вы писали:


Tom>>А в IDL-е строка обьявлена как LPOLESTR* или как BSTR*?

Tom>>Если первое — обьяви, как второе.
Tom>>Первая строка освобождается через CoTaskMemFree, вторая через SysFreeString, которая, фактически отнимает от указателя sizeof(int) и вызывает CoTaskMemFree


O>Спасибо боьшое за ответ


O>В IDL ОПИСАНИЕ ТАКОЕ


O> HRESULT GetClassDetails(

O> [in] REFCLSID clsid,
O> [out] LPOLESTR* ppszProgID,
O> [out] LPOLESTR* ppszUserType
O> );

O>Как эффективней реализовать получение параметров метода объявленных как [out] и являющимися LPOLECHAR*


O>ИСПОЛЬЗУЯ ATL??


O>Заранее благодарен!


Если строка именно LPOLESTR, то использовать на клиенте CComBSTR нельзя. Освобождай строку при помощи CoTaskMemFree, а ещё лучше таки используй BSTR. BSTR тот же LPOLESTR, только освобождается и выделяется через Sys***, а не CoTask... и в COM считается стандартной строкой именно BSTR а не LPOLESTR.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Народная мудрось
всем все никому ничего(с).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.