В настоящее время я изучаю структуру памяти в C. На данный момент я знаю, что в памяти программ C существует несколько разделов: text
, data
, bss
, heap
и stack
. Они также говорят, что heap
используется совместно с другими вещами вне программы.
Мои вопросы таковы.
- С чем именно делится
heap
? В одном источнике говорится, что куча всегда должна быть освобождена, чтобы сделать ее доступной для других процессов, тогда как в другом говорится, что область кучи совместно используется всеми потоками, общими библиотеками, и динамически загружаемые модули в процессе. Если он не используется совместно с другими процессами, действительно ли мне нужно освобождать его во время выполнения моей программы (а не в конце)? - Некоторые источники также выделяют старшие адреса (шестой раздел) для аргументов командной строки и переменных среды. Считать ли это еще одним слоем и частью программной памяти?
- Доступны ли другие разделы для чего-либо помимо программы?
text
,data
,bss
,heap
иstack
»: в каком документе говорится, что существует раздел с именем «куча»? - person Eric Postpischil   schedule 03.12.2020pool
, или что вы имеете в виду? - person Kaiyakha   schedule 03.12.2020