vak: (Улыбка)
[personal profile] vak
Стартовый адрес программы в большинстве современных 32-битных операционных систем (Windows, Linux, BSD) равен 0x0400000? Понятно, что не ноль: чтобы обращение по нулевому указателю давало ошибку. Но почему именно 4 мегабайта? Этому есть вполне логичное объяснение.

В 64-битных системах другой начальный адрес, а именно 0x100000000 (4 гигабайта).

Date: 2014-10-14 07:09 (UTC)
From: [identity profile] sab123.livejournal.com
Резервируется не только первая страница, а целый первый страничный директорий?

Date: 2014-10-14 14:51 (UTC)
From: [identity profile] sab123.livejournal.com
Ну, кстати, в Виндовсе нынче бинарники грузятся на случайный (в некоторых пределах) адрес. Чтобы осложнить жизнь атакам переполнения стека, которые пишут на стек интересный адрес перехода.

Date: 2014-10-14 07:40 (UTC)
From: [identity profile] archaicos.livejournal.com
Ага. Так в Windows 3.xx было сделано, типа оптимизация. А потом расползлось дальше.
http://blogs.msdn.com/b/oldnewthing/archive/2014/10/03/10562176.aspx