Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Утечка памяти при использовании DLL


Автор: SerK 9.4.2008, 17:53
Может кто наблюдал подобную картину с использованим DLL.
При обращении к DLL память приложения увеличивается, а при закрытии
приложения не уменьшается, почему? Ведь так можно дойти до зависания комьютера.
Кстати, после обращения к DLL, она закрывается, значит и память должна очищаться.

Автор: xvr 10.4.2008, 11:30
Цитата(SerK @  9.4.2008,  17:53 Найти цитируемый пост)
Может кто наблюдал подобную картину с использованим DLL.
При обращении к DLL память приложения увеличивается, а при закрытии
приложения не уменьшается, почему?
При закрытии приложения вся его память уничтожается, может имелось в виду закрытие (выгрузка) dll?

Цитата(SerK @  9.4.2008,  17:53 Найти цитируемый пост)
Кстати, после обращения к DLL, она закрывается, значит и память должна очищаться.
Память будет автоматически отдаваться ТОЛЬКО после завершения приложения, выгрузки dll еще недостаточно  smile Если остается невозвращенная память, значит либо вы забыли освободить что то, что заказала dll, либо dll с ошибкой.


Автор: SerK 11.4.2008, 13:13
xvr

Речь идет не о закрытии приложения, а именно  DLL.
По логике вещей, когда мы обратились к DLL загрузка памяти увеличивается, 
а когда мы закрываем DLL, память должна возвращаться к исходному значению.
Но этого не происходит, с каждым обращением к DLL память приложения растет и
растет.
При использовани ресурсов этого не происходит.
Это что не доработка Борланда, стоит ли использовать DLL.
Конечно, стоит, но в тех случая, когда не приходится часто обращаться DLL.
Может я не прав?

Автор: xvr 11.4.2008, 13:42
Цитата(SerK @ 11.4.2008,  13:13)
xvr

Речь идет не о закрытии приложения, а именно  DLL.
По логике вещей, когда мы обратились к DLL загрузка памяти увеличивается, 
а когда мы закрываем DLL, память должна возвращаться к исходному значению.

Что такое 'закрытие DLL'? FreeLibrary? Память, занятая под саму dll будет освобождена, вся динамическая память, занятая в процессе работы DLL - нет, да и не должна.
Цитата

Но этого не происходит, с каждым обращением к DLL память приложения растет и
растет.
Бага в DLL или ее использовании
Цитата

При использовани ресурсов этого не происходит.
Ресурсы не грузятся в динамическую память и не используют ее
Цитата

Это что не доработка Борланда, стоит ли использовать DLL.
Конечно, стоит, но в тех случая, когда не приходится часто обращаться DLL.
Может я не прав?
Не прав - прежде чем искать баги в Borland'е (или любом другом компиляторе) стоит их поискать поближе, например у себя в программе  smile 

Автор: Vyacheslav 15.4.2008, 10:43
Цитата(SerK @  9.4.2008,  17:53 Найти цитируемый пост)
При обращении к DLL память приложения увеличивается, а при закрытии
приложения не уменьшается, почему? 

А как Вы это определяли. Если по Task Manager - то это еще не факт

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)