进程在内存中按照如下规律分布
高地址
kernel
stack - bottom <- %ebp
stack - top <- %esp
lib - *.so
mmap
heap
bss
data
text
低地址
从gdb中看到,栈中元素的分配是从%esp到%ebp。
一般是以%ebp为基准,-0x20(%ebp)表示栈顶%esp,则-0x1c(%ebp)表示下一个入栈的元素的地址,每一个入栈元素之间地址相差4。
text中存储的是程序二进制代码。
data中存储的是已经初始化的全局变量、静态变量、常量数据。
bss中存储的是未初始化的全局变量、静态变量、常量数据。
heap向上增长,小块内存malloc从heap中分配,大块内存分配直接从mmap中分配。
Comments | NOTHING