二进制-进程(程序)在内存中的分布


进程在内存中按照如下规律分布

高地址
      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中分配。

声明:物博网|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 二进制-进程(程序)在内存中的分布


喜欢安全与WEB开发