В Linux адресное пространство процесса, выполняющего exec (), заменяется новым, достаточно большим для исполняемого двоичного файла. Я думаю, то же самое верно и для других операционных систем. И это разумно. Если адресное пространство не будет заменено, то выполняемая вами программа наследует все ваши отображения памяти (включая общую), библиотеки, которые сопоставлены с вашим адресным пространством (и новая программа, вероятно, не нуждается в них), файлы и так далее. Это немного странно.