来自国嵌2014嵌入式视频
程序构成
在学习Linux用程序开发时,经会遇到如下概念:代码段、数据段、BSS段(Block Started by Symbol,又名:未初始化数据段) 、堆(heap)和栈(stack)。而这些部分也是构成Linux用程序的重要组成部分。
当Linux应用程序在内存中运行的时候,程序是如何布局的?
代码段的地址是固定的,截图是有错误,应该是 0x08048000
通过测试程序的分析,得出以下结论:
数据存放
1.代码段:代码,全局常量(const)、字符串常量
2.数据段:全局变量(初始化以及未初始化的)、静态变量(全局的和局部的、初始化的以及未初始化的)
3.堆:动态分配的区域
4.栈:局部变量(初始化以及未初始化的,但不包含静态变量)、局部只读变量(const)
其中BSS段属于数据段的子段,存放全局的、静态的为初始化变量。
利用 readelf –S 程序名输出程序BSS断信息。