Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Указание базового адреса модуля 
Author Message
CaptainFlint



PostPosted: Tue Mar 23, 2010 19:38    Post subject: Reply with quote

MVV wrote:
Ну подумай сам. Код модуля загружается в память, и все ее копии пользуют его как общий (по логике, второй и далее разы даже читать секцию кода из файла не надо, раз она уже есть в памяти). Но если одна из них загружается по отличному от базового адреса, система ее загрузит и внесет корректировки в ее код, т.е. он уже будет отличаться от кода тех копий, которые загружены по базовому адресу - как минимум, все инструкции call и jmp (кроме вызовов системных функций) будут содержать другие адреса (если быть точным, будет исправлен адрес в каждом месте, указанном в секции релокаций).

Не понял, если библиотека уже загружена в память по некоторому адресу, нафига ж тогда её ещё раз грузить по другому адресу? Что-то у тебя с ног на голову всё повёрнуто. Вот твоя аргументация в сокращённом виде (поправь, если не так понял): система грузит вторую копию DLL по новому адресу, меняет указатели, адреса становятся другими, нельзя переиспользовать код, следовательно, придётся держать несколько копий. Так ведь эта цепочка рассуждений начинается как раз того, что по какой-то причине грузится вторая копия по новому адресу! Какие тут ещё могут быть доводы и обоснования? Мы предположили, что загрузилась новая копия, и на основе этого доказали, что новая копия загрузится.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
View user's profile Send private message Visit poster's website


Powered by phpBB © 2001, 2005 phpBB Group