В чьём адресном пространстве DLL выделяет память?

yolki

Ситуация: есть COM-сервер (DLL во время работы с которым ж0стко утекает память. Могут ли эти лики быть связаны с этой DLL, или однозначно нет и надо искать проблемы у себя?

oliver11

http://msdn2.microsoft.com/en-us/library/aa366876%28VS.85%29...
However, memory allocated by a DLL is allocated in the address space of the process that called the DLL and is not accessible to other processes using the same DLL.
В принципе, трудно представить, как может быть по-другому.

yolki

у меня аналогичные представления о нормальной работе DLL.
Но ситуация такова:
DLL используется для доспута к данным, которые хранятся в файле в специфическом формате.
у COM-объекта есть метод LoadFromFile, через который указывается файл, с которым будет происходить дальнейшая работа.
Меня смущает, что количество памяти, выделенное в процессе, не возрастает при использовании этого метода. Должен же объект внутри себя что-то выделить..

freezer

количество памяти, выделенное в процессе, не возрастает
а чем ты это количество памяти смотришь? ;)

yolki

о!
ща проверю

yolki

Использование PsAPI: GetProcessMemoryInfo прояснило ситуацию, утечки найдены. будем бодаться с производителями.

SPARTAK3959

Эта строчка не имеет отношения к COM-серверам. Если COM-сервер out-of-process или remote (не знаю может ли он иметь расширение .dll при этом то память как раз выделяется в DLL, а не в процессе. Точнее говоря, она всегда выделяется в DLL, просто в случае in-process COM-сервера ее адресное пространство совпадает с адресным пространством процесса.
Оставить комментарий
Имя или ник:
Комментарий: