我正在阅读关于可用内存段的 C 文本。文本说两个最高的段是堆和堆栈,它们彼此相向增长。
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
堆和堆栈之间有大约 30 亿字节要共享的解释吗?我正在使用的计算机只有 1 GB 的内存,这让我怀疑这种解释的准确性。