全局变量,静态变量以及局部变量存放位置
来源:互联网 发布:爱淘宝广场舞套装秋冬 编辑:程序博客网 时间:2024/05/16 14:14
一般工程编译完成后会生成.o 文件 然后通过link 成一个完整的镜像
可执行程序包括BSS段、数据段、代码段(也称文本段)。
BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。
注意和数据段的区别,BSS存放的是未初始化的全局变量和静态变量,数据段存放的是初始化后的全局变量和静态变量。
UNIX下可使用size命令查看可执行文件的段大小信息。如size a.out。
ELF 文件一般包含 一下几个代码段 :
file header字段里存放了描述整个文件的基本属性信息的内容,如程序入口地址,其他各段信息(偏移量和范围)
.text section:主要是编译后的源码指令,是只读字段。
.data section :初始化后的非const的全局变量变量或者局部static变量。
.bss:未初始化后的非const全局变量和局部static变量
rodata字段 是存放只读数据
common 存放注释的
堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)
栈(stack):栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。
- 全局变量,静态变量以及局部变量存放位置
- 全局变量,静态变量以及局部变量存放位置
- 全局变量,静态变量以及局部变量存放位置
- 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别
- 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别(转)
- 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别(转)
- 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别(转)
- 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别
- 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别(转)
- 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别
- 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别
- 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别(转)
- 局部变量、全局变量、静态变量的含义及存储位置
- 局部变量、全局变量、静态变量
- 局部变量, 全局变量, 静态变量
- 局部变量、全局变量、静态变量
- 静态变量,局部变量,全局变量
- 局部变量、全局变量、静态变量
- Code Fragment-对于一些状态性接口,应该有不同的阶段
- JAVA多线程之ThreadLocal
- Linux基本功十:bash运算符及启动脚本初步
- setjmp函数和longjmp函数
- Android 收集已发布程序的崩溃信息
- 全局变量,静态变量以及局部变量存放位置
- 若何做好微信营销的标题?
- Android 后台发送邮件 (收集应用异常信息+Demo代码)
- android蓝牙开发---与蓝牙模块进行通信
- 搜索引擎对IP的惩罚是否会影响整个服务器上的所有网站
- 让AlertDialog在点击按钮后不消失、不关闭
- 如何养成写软文的习惯
- poj 1264 SCUD Busters
- HDU-2032