c语言程序的存储结构
Linux内存映像地址范围存储位置0xC0000000-0xFFFFFFFF (3~4GB)内核虚拟存储器(内核空间)0x00000000-0xC0000000(0~3GB)程序三大段 (用户空间)程序三大段段类别中文作用dataStack栈(向上增长)存放函数形参和局部变量(auto类型),由编译器自动分配和释放da...
·
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修饰的常量 |
程序代码区 | 存放函数体(类成员函数和全局函数)的二进制代码 |
区别
三大段属于程序结构。五大分区属于程序存储位置。
更多推荐
已为社区贡献1条内容
所有评论(0)