Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как убить DLL-ку, находящуюся в памяти? [D6, Win2k]


Chak ©   (2002-01-19 15:48:00) 

Во время разработки DLL-ки, после кимпиляции приложения в результате(какой либо, неважно какой) ошибки приходятся подправлять код и соответственно повторно компилировать его, часто бывает так что загруженная в память DLL-ка там и остается после вихода из приложения, а при повторной компиляции грузится не та, код которой подправлен, а та что висит в памяти.
Вопрос: как избавится от той что висит в памяти, ато перезагрузка самой Delphi уже порядком надоела, да и времени уходит много!?


Aleksey Pavlov   (2002-01-21 14:23:00) [1]

При работе с dll надо учитывать тот факт, что, когда вы используете ф-ию FreeLibrary вы не выгружаете, а освобождаетеdll !
Ваша библиотека может оставаться в памяти даже после того, как все приложения перестанут её использовать.
Это сделано для оптимизации работы с dll. Система специально не освобождает память из под dll (не всегда !) на случай, если данная библиотека понадобится какому-то процессу.
Никаких документированных способов насильно выгрузить DLL из памяти нет.
А те, что использует сама система, работают с ядром на низком уровне.

>> Chak:
В качестве совета, в сложившейся ситуации, можно порекомендовать изменение имени библиотеки с последующей перекомпиляцией как самой библиотеки так и файла-проекта.


Chak   (2002-01-20 23:06:00) [2]

Как же заставить грузиться ту что нужно мне?


StelZ   (2002-01-20 19:28:00) [3]

Если не шибаюсь, то все в порядке. Дело в том, что DLL-ки даже после завершения приложения остаются в памяти. Сделано это для удобства использования приложений. Например, запусти Word. Он будет довольно длительное время грузиться. Закрой его. Открой заново. Он запустится за считанные секунды. Это из-за того, что большенство его функций записаны в DLL-ках, которые остаются в памяти.
Возможно, та же ситуация и у тебя. Винда думает, что ты вызываешь ту же самую DDL-ю и вызывает не заново скомпилированную, а ту, которая было в памяти.

имхо...


Chak   (2002-01-20 11:09:00) [4]

Незнаю даже, но факт всетаки остается фактом, она висит в памяти!
Иногда даже рестарт Delphi не помагает, приходится переружать комп! Как же быть в таком случае, что я не так делаю?


paul_shmakov   (2002-01-20 02:17:00) [5]

??? как Вам это удается?
1. когда выгружается приложение также выгружаются и все загруженные им dll.
2. если Вам все таки удалось свою dll оставить где-то в памяти, то у Вас не должна пройти компиляция проекта этой dll, т.к. ее файл недоступен для записи


Наверх

Титульная страница Поиск, карта сайта Написать письмо