https://www.toutiao.com/i6702226843660976651/
想要学习更多单片机知识的同学欢迎关注,有兴趣的同学可以关注私信加群,跟志同道合的小伙伴一起交流。
目录
1、.bss
2、.data
3、.text
单片机的程序是怎么组成的呢,代码又是如何存放的呢?带着疑问,今天我们来学习下bss data text都是什么。
.bss(block started by symbol)段是用来存放已经初始化为0或者未初始化的全局变量的内存区域,属于静态内存分配。
接下来编写代码来验证一下。
代码如下:
#include <stdio.h>
int bss_data[1024*1024];
int main(int argc,char * argv[])
{
return 0;
}
接下来我们编译一下,看看输出信息,使用命令
gcc -g bss.c -o bss
使用命令
size bss
text data bss dec hex filename
1055 272 4194336 4195663 40054f bss
1024*1024 = 4194336
可见bss这个未初始化的全局数组被存放在了bss段中。
bss段只占用运行内存,并不占用可执行文件大小。
未初始化的全局变量放在了bss段,那么其他的全局变量呢,相信你已经猜到了,data段(data segment)就是用来存放已经初始化的全局变量的。
将上面的代码中,bss数组初始化为1,再编译一下看看就会发现之前的bss段大小,全部转移到了data段中,神奇!
data段不仅占用可执行文件的大小,也要占用运行内存。
text段是用来存放代码的内存区域,这个区域是可执行的,我们编写的代码指令都会放在这个区域,感兴趣的同学可以参考步骤一来编译一下,查看下text段的大小。
今天的课先讲到这里,欢迎大家提问交流,有问必答,别忘了关注哦
https://www.toutiao.com/i6702226843660976651/
联系客服