Ваша операционная система предоставляет так называемые системные вызовы для динамического выделения памяти (таНос, свободный, и т.д.), он также предоставляет механизм для загрузки и выполнения программы.
Когда программа загружается с помощью os, текстовый сегмент (память кодов) настроен и статически выделенная память в вашей программе сразу же доступна. Поскольку функции вашего кода вызывают, в стеке выделяются (статически выделенные) переменные в ваших функциях, и ваша динамически распределенная память (например, с помощью malloc()) выделяется в куче. Во время выполнения вашей программы ответственность за управление памятью (ваша программистская ответственность) - это отсутствие утечки памяти и, в конечном итоге, приведет к тому, что у продолжительной программы закончится нехватка памяти, и она потерпит крах или в экстремальных ситуациях случаев, в зависимости от ОС, взять с собой всю ОС).
Смотрите также статью: http://www.maxi-pedia.com/what+is+heap+and+stack
очень хороший link ... – wrapperm
I второй оберткаm. :) – smwikipedia
Макет, как правило, устанавливается (и управляется) компоновщиком, а не ядром.Ядро просто считывает информацию в исполняемом изображении и соответственно настраивает карту памяти. Динамический компоновщик будет отображаться, если исполняемый файл так задает (что делает для динамически связанных исполняемых файлов) и обрабатывает много вещей. Вы можете подумать о «компоновщике» компоновщика ОС, но вы можете создать собственный компоновщик, который делает практически все, что угодно, –