c语言程序的存储结构

Linux内存映像

地址范围 存储位置
0xC0000000-0xFFFFFFFF (3~4GB) 内核虚拟存储器(内核空间)
0x00000000-0xC0000000 (0~3GB) 程序三大段 (用户空间)

程序三大段

类别 中文 作用
data Stack 栈(向上增长) 存放函数形参和局部变量(auto类型),由编译器自动分配和释放
data Heap 堆(向下增长) 动态申请内存
data static data 全局/静态存储区 已初始化的全局变量和静态变量(静态全局变量与静态局部变量),只读常量
bss .bss 未初始化的全局变量和静态变量,此段不存数据,只管理变量的地址
text program 程序代码区 存放程序的二进制代码,内存由系统管理

程序五大分区

分区 说明
(函数形参、局部变量、返回地址、返回数据) 等临时变量存储位置
(malloc、calloc、realloc)产生的内存块
全局存储区 已初始化的全局变量和由static 修饰的静态变量
常量存储区 const修饰的常量
程序代码区 存放函数体(类成员函数和全局函数)的二进制代码

区别

三大段属于程序结构。五大分区属于程序存储位置。

你可能感兴趣的:(c语言程序的存储结构)