初始化的静态变量会在数据段分配内存,未初始化的静态变量会在BSS段分配内存。
Linux内核下的存储主要分为5大段:栈、堆、数据段、代码段、不可访问区域。
栈
:又称“运行时栈”,按照“后进先出”原则操作数据,主要存储局部变量,用完即销毁。
堆
:又称“运行时堆”,是一块自由存储区域,由用户手动申请和销毁空间,一般和malloc, free, calloc, realloc等内存操作关键字一起出现。
数据段
:主要由三部分组成(.bass段、.data段、.rodata段),.bass主要存放未初始化静态数据;.data存放已经初始化静态数据;.rodata存放只读数据(常量)。
代码段
:主要分两部分(.text和.init),.text存放用户程序代码;.init存放可执行程序初始化代码。