Проблемы с освобождением памяти (ole32)
От: Seper Россия  
Дата: 30.10.03 08:33
Оценка:
Всем добрый день!

Очень нужен совет.

Я использую в интерфейс IShellLink для получения информации из ярлыков.

Функция используется редко, а программа должна всегда находиться в памяти постоянно, хотел сделать, чтобы перед использованием этой функции (читай IShellLink) все что надо загружалось и инициализировалось, а потом соответственно выгружалось.

Однако фактически ничего не выгружается, т.е. после использования этой функции в памяти остаются следующие библиотеки:

Loaded 'C:\WINDOWS\system32\ole32.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\clbcatq.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\oleaut32.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\comres.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\linkinfo.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\ntshrui.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\atl.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\netapi32.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\userenv.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\setupapi.dll', No symbols loaded.

Никаких Unloaded потом нет. Соответсвенно размер памяти, показываемый таксменеджером увеличивается на ~2 Mb (2 до и 4 после ипользования интерфейса)

Естественно делаю CoInitialize(), Release(), CoUninitialize() и даже пробовал CoFreeUnusedLibraries() и CoFreeAllLibraries() — не помогает.


Вот сижу и не знаю как быть.

Ручками делать FreeLibrary? А если потом опять надо будет интерфейсом воспользоваться?


Буду ОЧЕНЬ благодарен за любую подсказку!
Re: Проблемы с освобождением памяти (ole32)
От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.10.03 08:45
Оценка:
Здравствуйте, Seper, Вы писали:


S>Естественно делаю CoInitialize(), Release(), CoUninitialize() и даже пробовал CoFreeUnusedLibraries() и CoFreeAllLibraries() — не помогает.


S>Ручками делать FreeLibrary? А если потом опять надо будет интерфейсом воспользоваться?


Насколько я знаю, нет способа гарантированной выгрузки DLL. Тее нужно подождать немного — винда их отпустит. К томже 2 мега некритично.
Re[2]: Проблемы с освобождением памяти (ole32)
От: Seper Россия  
Дата: 30.10.03 09:10
Оценка:
Здравствуйте, Plutonia Experiment, Вы писали:


S>>Естественно делаю CoInitialize(), Release(), CoUninitialize() и даже пробовал CoFreeUnusedLibraries() и CoFreeAllLibraries() — не помогает.


S>>Ручками делать FreeLibrary? А если потом опять надо будет интерфейсом воспользоваться?


PE>Насколько я знаю, нет способа гарантированной выгрузки DLL. Тее нужно подождать немного — винда их отпустит. К томже 2 мега некритично.


Ну как сказать не критично. Не критично, но нехорошо А сколько примерно ждать, вот жду уже с час — нифига Не отпускает.
Re[3]: Проблемы с освобождением памяти (ole32)
От: AlexeyP10  
Дата: 30.10.03 09:28
Оценка:
Насколько я знаю, система не загружает библиотеки, а просто делает маппинг адресного пространства DLL в адресное пространство приложения, т.е. реально лишняя память не выделяется.
... << RSDN@Home 1.1 beta 2 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.