打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
单片机入门知识 | 内存管理.bss .data .text

https://www.toutiao.com/i6702226843660976651/

想要学习更多单片机知识的同学欢迎关注,有兴趣的同学可以关注私信加群,跟志同道合的小伙伴一起交流。

 目录

1、.bss

2、.data

3、.text

单片机的程序是怎么组成的呢,代码又是如何存放的呢?带着疑问,今天我们来学习下bss data text都是什么。

0x01.bss

.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段只占用运行内存,并不占用可执行文件大小。

0x02 .data

未初始化的全局变量放在了bss段,那么其他的全局变量呢,相信你已经猜到了,data段(data segment)就是用来存放已经初始化的全局变量的。

将上面的代码中,bss数组初始化为1,再编译一下看看就会发现之前的bss段大小,全部转移到了data段中,神奇!

data段不仅占用可执行文件的大小,也要占用运行内存。

0x03 .text

text段是用来存放代码的内存区域,这个区域是可执行的,我们编写的代码指令都会放在这个区域,感兴趣的同学可以参考步骤一来编译一下,查看下text段的大小。

今天的课先讲到这里,欢迎大家提问交流,有问必答,别忘了关注哦

https://www.toutiao.com/i6702226843660976651/

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
程序分text, data (initialized), bss, stack, heap几个段 - C Language Syntax - 木瓜老C
进程的地址空间:TEXT,DATA,BSS,HEAP,STACK
内存区域分配与ELF 之类的关系
BSS段、数据段和代码段
汇编中bss,data,text,rodata,heap,stack的意义
单片机的内存和寄存器是什么?代码中的变量和内存之间有什么关系?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服