Re: Передача массивов в DCOM
От: Bai  
Дата: 17.04.02 04:06
Оценка:
Здравствуйте Андрей А. Тельнов, Вы писали:

ААТ>Проблема в следующем: У меня есть COM сервер, у которого есть функция, принимающая один параметр — массив вариантов (STDMETHODIMP)TSampleCOMSvrImpl::SampleFunction(TVariantInParam vArray)

ААТ>{
ААТ> return S_OK;
ААТ>}
ААТ>и есть клиент который периодически вызывает эту функцию: TCOMISampleCOMSvr g_Svr;
ААТ>void __stdcall Test()
ААТ>{
ААТ> Variant V(OPENARRAY(int, 64*1024 — 1), varByte);
ААТ> LPVOID p = V.ArrayLock();
ААТ> // запролняю массив
ААТ> V.ArrayUnlock();
ААТ> g_Svr->SampleFunction(V);
ААТ>}
ААТ>Все замечательно работает, только вот диспетчер задач показывает, что на клиенте постоянная утечка памяти (т.е. с каждой минутой работы памяти клиенту требуется все больше и больше), через несколько часов работы виндовоз начинает кричать об отсутствии места в файле подкачки. Если же строку с вызовом g_Svr->SampleFunction(V); закоментировать, то ничего подобного не происходит. Кто знает, как бороться с этой проблемой? Помогите.
ААТ>Заранее благодарен.

Вообще то я не уверен, но может попробовать отчищать вариант после того как вызов завершен....
в мсдн вроде есть такая функция
HRESULT VariantClear(VARIANT * pv);.....................

результат не гарантирую но попробовать можно..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.