Я читаю текст на C о сегментах памяти, доступных для использования. В тексте говорится, что два самых высоких сегмента - это куча и стек, которые растут друг к другу.GDB: как вы измеряете пространство памяти между кучей и стеком?
Segments:
________
|Text (Machine code)
|________
|Data
|________
|BSS
|________
|Heap (grows towards stack)
|
|
|Stack (grows towards heap)
|________
Создание простой программы для печати из ячеек памяти переменных, созданных в четырех нижних сегментов приводит к следующему:
initialized in | Hex Address | Decimal Value
Data - 0x080497ec 134,518,764
BSS - 0x080497f8 134,518,776
Heap - 0x0804a008 134,520,840
Stack - 0xbffff844 3,221,223,524
ли интерпретация, что куча и стек имеют ~ 3 млрд байтов для обмена между ними? Компьютер, на котором я работаю, имеет только 1 ГБ памяти, что заставляет меня сомневаться в точности этой интерпретации.
Это один гигабайт реальной физической памяти или один гигабайт общей _virtual_ памяти? –
Какой текст? Макет стека против кучи в виртуальном пространстве процесса * очень * зависит от системы. Разумеется, размер виртуального адресного пространства тоже мало значит. – unwind
Ах, виртуальное адресное пространство и физическое адресное пространство. Не знал о различии. Благодарю. – Nate