On 2013.01.10 at 13:22:42 +0400, Dmitrii Kashin wrote: > > Сегодня игрался с gdb и обнаружил интересную вещицу. > > Я запустил 2 экземпляра gdb с одним и тем же исполняемым файлом (назовем > его - test). Дизассемблировал функцию main(), и обнаружил, что адреса в > обоих экземплярах gdb - совпадают. > > Походу, я что-то не так понимаю. Я полагал, что когда я запускаю процесс > - ему выделяется свое адресное пространство. И таким образом, если я > запущу два экземпляра программы 'test', адрес функции main первого > экземпляра должен отличаться от адреса одноименной функции второго > экземпляра, т.к. они находятся в разных адресных пространствах.
Именно потому, что каждой программе выделяется своё адресное пространство, адреса имеют полное право совпадать. Вот если бы два экземпляра программы были загружены в одно адресное пространство, то пришлось бы одним и тем же объектам разных экземпляров располагаться по разным адресам. А так, имеем в распоряжении два одинаковых адресных пространства. С адресами от 0 до 4 миллиардов. Грузим туда одинаковым загрузчиком одинаковые исполняемые образы. Естественно, что результат получается одинаковый. -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

