Куда пропадают 4 Кб после выгрузки Dll
От: ilyatar  
Дата: 06.06.05 06:33
Оценка:
Загружаю Dll'ку функцией LoadLibrary(), в диспетчере задач объем памяти занимаемый приложением увеличивается на 40 Кб, далее вызываю FreeLibrary() память высвобождается но в объеме 36 Кб, если далее загружать и выгружать Dll, то память будет утекать по 4 Кб. Есть предположение, что каждый раз при первом вызове LoadLibrary(), в куче процесса создается новый счетчик числа пользователей библиотеки. Объясните суть этого явления и есть ли способ избежать постоянной потери этих 4 Кб памяти
Re: Куда пропадают 4 Кб после выгрузки Dll
От: __kain Россия  
Дата: 06.06.05 08:20
Оценка:
Может быть есть смысл загрузить библиотеку 1 раз и до конца работы с ней? Каждый раз загружать при использовании... хм, не рационально...
Re[2]: Куда пропадают 4 Кб после выгрузки Dll
От: ilyatar  
Дата: 06.06.05 08:54
Оценка:
Можно, но библиотек возможно будет очень много и я не знаю сколько потребуется пользователю во время работы, а оставлять все в памяти нехочется.
Re[3]: Куда пропадают 4 Кб после выгрузки Dll
От: raskin Россия  
Дата: 06.06.05 09:38
Оценка:
Здравствуйте, ilyatar, Вы писали:

I>Можно, но библиотек возможно будет очень много и я не знаю сколько потребуется пользователю во время работы, а оставлять все в памяти нехочется.


Если не выгружать, то LoadLibrary, как я помню будет просто возвращать тот же HANDLE. Проблема, что пользователь может по разу вызвать 10^n библиотек? или, что 10^n раз одну из 10^2n — тогда можно просто не выгружать.
Re[4]: Куда пропадают 4 Кб после выгрузки Dll
От: ilyatar  
Дата: 06.06.05 10:31
Оценка:
Здравствуйте, raskin, Вы писали:

R>Если не выгружать, то LoadLibrary, как я помню будет просто возвращать тот же HANDLE. Проблема, что пользователь может по разу вызвать 10^n библиотек? или, что 10^n раз одну из 10^2n — тогда можно просто не выгружать.


Вызвать он сможет только один раз одну библиотеку, а когда надобность в ней отпадет, планировалось выгрузить ее из памяти, поскольку пользователь однозначно будет работать с другой библиотекой.
Попутно возник еще один вопрос, а если dll использует пакеты, то как они загружаются и выгружаются при явном связывании dll и приложения?
Re[5]: Куда пропадают 4 Кб после выгрузки Dll
От: adontz Грузия http://adontz.wordpress.com/
Дата: 08.06.05 21:12
Оценка:
Здравствуйте, ilyatar, Вы писали:

IА может использовать delay loading с поддержкой выгрузки и свалить все заботы на MS?
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.