历史上的今天
返回首页

历史上的今天

今天是:2024年08月24日(星期六)

2019年08月24日 | stm32内存管理分配

2019-08-24 来源:eefocus

bss段:

 


  bss段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。


  bss是英文Block Started by Symbol的简称。


  bss段属于静态内存分配。 


  


data段:

  数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。


  数据段属于静态内存分配。 


  


text段:

  代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。


  这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读(某些架构也允许代码段为可写,即允许修改程序)。


  在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。 


 

堆(heap):

  堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。


  当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);


  当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)。



栈(stack):

   栈又称堆栈,是用户存放程序临时创建的局部变量,


  也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。


  除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。


  由于栈的先进先出(FIFO)特点,所以栈特别方便用来保存/恢复调用现场。


  从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。 


一个程序本质上都是由 bss段、data段、text段三个组成的。


  这样的概念,不知道最初来源于哪里的规定,但在当前的计算机程序设计中是很重要的一个基本概念。


  而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题。


    在采用段式内存管理的架构中(比如intel的80x86系统),bss段通常是指用来存放程序中未初始化的全局变量的一块内存区域,


  一般在初始化时bss 段部分将会清零。bss段属于静态内存分配,即程序一开始就将其清零了。


    比如,在C语言之类的程序编译完成之后,已初始化的全局变量保存在.data 段中,未初始化的全局变量保存在.bss 段中。


  text和data段都在可执行文件中(在嵌入式系统里一般是固化在镜像文件中),由系统从可执行文件中加载;


  而bss段不在可执行文件中,由系统初始化。

推荐阅读

史海拾趣

Aydin Corp公司的发展小趣事

面对日益严峻的环境挑战和市场变化,Aydin Corp积极寻求可持续发展之路。公司致力于推广环保理念,采用环保材料和节能技术,降低生产过程中的能耗和排放。同时,Aydin Corp还加大在新能源、智能电子等领域的研发力度,为公司的未来发展做好充分准备。展望未来,Aydin Corp将继续秉持创新、品质、合作的理念,为电子行业的发展贡献更多的力量。

这些故事虽然基于假设,但反映了电子行业公司普遍面临的挑战和机遇。如需获取关于Aydin Corp公司的真实发展故事,建议直接访问其官方网站或查阅相关新闻报道。

富瀚(Fullhan)公司的发展小趣事
观察电动机保护器是否在达到过载条件后迅速切断电源。如果保护器正常工作,电动机应停止运行,且保护器上的指示灯或显示屏会显示相应的过载保护信息。
Digilent公司的发展小趣事

在全球节能意识日益增强的背景下,DIALIGHT致力于推动绿色照明的发展。公司的LED产品具有高效节能、长寿命和环保等优点,有助于减少能源消耗和环境污染。此外,DIALIGHT还积极参与各种绿色照明项目,为推动可持续发展贡献自己的力量。

HANBIT Electronics公司的发展小趣事

DIALIGHT在工业LED照明领域取得了显著成就。公司专注于为工业应用设计集成系统,以减少安装和维护的复杂性,并确保产品在恶劣条件下持续稳定运行。此外,DIALIGHT的LED产品旨在提供优越的运行性能、可靠性和耐久性,帮助客户降低能源成本、维护成本和碳足迹,同时提高设施的安全性和生产力。

Amphenol(安费诺)公司的发展小趣事

在全球节能意识日益增强的背景下,DIALIGHT致力于推动绿色照明的发展。公司的LED产品具有高效节能、长寿命和环保等优点,有助于减少能源消耗和环境污染。此外,DIALIGHT还积极参与各种绿色照明项目,为推动可持续发展贡献自己的力量。

Accelink Technologies Co Ltd公司的发展小趣事

DIALIGHT的故事始于1938年的纽约布鲁克林,当时公司专注于为飞机生产仪表板灯。随着LED技术的兴起,1971年,也就是LED推出仅一年后,DIALIGHT便推出了首款LED产品,标志着公司正式涉足LED照明领域。从此,DIALIGHT凭借其卓越的技术实力和创新能力,彻底改变了LED在交通控制、指示灯、结构塔和工业场所等领域的应用方式。

问答坊 | AI 解惑

Protel dxp2004注册不了

分别装了proteldxp2004四个程序,到最后注册不了,请教是什么问题,…

查看全部问答>

请问CPLD的JTAG口和CPLD距离有12CM远。。这样会不会有问题啊???

来自EEWORLD合作群:arm linux fpga 嵌入0群  49900581(超级群)  群主在坛子里ID:wangkj 请问CPLD的JTAG口和CPLD距离有12CM远。。这样会不会有问题啊??? 会不会下载不了啊?…

查看全部问答>

有人改写过uip使用双缓存么?

tcp ip 轻量级开源协议uip使用单缓存收发数据,有前辈改写过,让它使用双缓存么,分离收发的缓存?改写后的效果如何,有没有带来实际的好处?…

查看全部问答>

今天实在很生气

以前买了一块S3C44B0开发板,附带了一块JTAG板和一根连接线。 之前我一直没有用使用JTAG板 ,这几天想下载程序到板子里面,就用了它,可是总是不能成功。用H-JTAG检测芯片的型号,都没成功,于是我就找原因。一连被折腾了好几天,浪费我这么多时间 ...…

查看全部问答>

没分了,请精通视频芯片开发的帮帮忙?

有如下英文: The SAA7130HL is a single chip solution to digitize and decode video, and capture it through the PCI-bus。 说的是SAA7130HL可以用来数字化和解码视频。 请问 1.数字化是不是把模拟的原始采集来的图像模拟信号数字化啊? 2 ...…

查看全部问答>

弱弱问一下 给U盘重命名的问题?

我用的arm开发板,将U盘插进去后,显示的名称为 \"硬盘\",我想用重命名改名字但是不行,请问,大虾们,这个名字就不能改吗?想改成英文的。 谢谢!…

查看全部问答>

GPRS模块MC55可否支持来电显示功能?

看了文档,好象不支持。请各位确认一下。 如果支持,请给出具体描述。 谢谢!…

查看全部问答>

基于LM3S8962以太网的简单TFTP的服务器学习系列二

很多初学者开始学习文件系统时,或许还是模糊的一个概念而已,只知道它是文件管理的一个复杂结构,自然会想到的是我们平时用到的U盘、SD、TF卡、MP4/5存储盘、电脑磁盘等,文件系统在生活中随处可见,下面我根据个人经验介绍一些关于文件系统的 ...…

查看全部问答>

MSP430 单触式电容传感器设计指南

MSP430G2上的触摸板应该就是用这个方法实现的   手头有430的可以自己验证下哦!…

查看全部问答>