Linux系统中进程内存分布

Linux中进程内存的分布

  • 1.内存分布
  • 2.栈
  • 3.堆

1.内存分布

以32位系统为例,共有4G的寻址能力,进程在内存中的分布如下图所示。Linux默认将高地址的1G空间分配给内核,称为内核空间,剩下的3G空间分配给进程使用,称为用户空间。
Linux系统中进程内存分布_第1张图片

用户空间从低地址空间到高地址空间包含如下5个部分:

  • 代码段(text segment):存放程序的可执行二进制代码
  • 数据段(data segment):存放程序中已经初始化且初值不为0的全局变量和静态局部变量,数据段属于静态内存分配
  • BSS段:存放未初始化的全局变量和静态局部变量;初值为0的全局变量和静态局部变量
  • 堆(heap):用于存放程序运行时动态分配的内存段,可动态扩张或者缩减
  • 栈(stack):由编译器自动分配释放,它存放如下信息:
    1. 函数内部声明的非静态局部变量
    2. 记录函数调用过程的相关维护信息(称为栈帧)
  • 内存映射区域:可以用于内存映射,或者装在动态链接库

你可能感兴趣的:(LINUX,C/C++,linux,c语言)