电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

电子发烧友网>嵌入式技术>你知道bss,data,text,rodata,堆,栈,常量段等区别?

你知道bss,data,text,rodata,堆,栈,常量段等区别?

收藏

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论

查看更多

相关推荐

区别在哪

以下引用网上资料 理解区别(1)区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值,其操作方式类似于数据结构中的。(2)区(heap):一般由程序员分配和释放
2021-08-11 09:18:43

区别是什么

在回答完进程的虚拟地址空间布局之后(上一篇),面试官可能抓住深入展开。区别①管理方式:由编译器自动管理;由程序员控制,使用方便,但易产生内存泄露。②生长方向:向低地址扩展(即
2021-12-22 07:26:03

常量和变量有哪些区别

引用和拷贝有什么区别常量和变量有哪些区别
2021-10-08 08:42:25

ARM为什么需要重定位?如何去实现呢

、程序中的bssdata,代码(.text),(heap),(stack).bss:程序中未初始化的和已经初始化为0的全局变量和已经初始化为0的静态局部变量(static).data:程序
2022-05-18 16:42:18

ARM裸机重定位的目的是什么?如何实现

、 程序组成代码text):运行指令数据data):全局变量只读数据rodata):const全局变量Bss:初值为0的全局变量Common:注释3、使用链接脚本all
2022-05-16 14:32:37

AT32 Eclipse中实现分散加载的方法

*); . = ALIGN(4);} > FLASH_3/* The program code and other data goes into FLASH */.text :{ . = ALIGN(4
2022-06-21 19:27:20

C语言内存分配-通俗理解

可以看出程序在未运行前,没有调入到内存时,分为三个部分:代码区(text)、数据区(data)、未初始化数据区(bss)。(1) 代码区(text)存放CPU可执行的机器指令,由于程序被经常使用,防止其
2016-10-08 14:57:24

C语言单片机、堆栈的区别是什么?

C语言单片机、堆栈的区别是什么?
2021-10-13 08:09:36

C语言单片机、堆栈的区别(仅供参考)相关资料分享

计算机C语言中各个变量的存放区域:代码区(CODE): 存放函数代码;静态数据区(DATA): 存放全局变量/静态变量;区(HEAP): 是自由分配区,存放动态数据,malloc()申请的空间就是
2021-07-01 07:31:40

C语言单片机程序的组成、存储与运行STM32实例演示 相关资料下载

本文将进程的地址空间(数据、代码)C语言的变量类型与存储(常量、自动变量、静态局部变量、全部变量)单片机中FLASH、SRAM单片机程序编译时的Code、RO-data、RW-data
2021-07-01 09:19:04

C语言和其他高级语言的最大的区别是什么?

;具体如下: 1、区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值。其操作方式类似于数据结构中的。2、区(heap) — 一般由程序员分配释放, 若程序员不释放,程序
2018-07-16 13:41:18

C语言编程程序的内存如何布局

(Text)、只读数据(RO Data)和读写数据(RW Data)。在程序运行之前,将动态生成未初始化数据(BSS),在程序的运行时还将动态形成堆(Heap)区域和(Stack)区域。一般来说,在
2017-10-09 09:15:48

C语言编程程序的内存如何布局

(Text)、只读数据(RO Data)和读写数据(RW Data)。在程序运行之前,将动态生成未初始化数据(BSS),在程序的运行时还将动态形成堆(Heap)区域和(Stack)区域。一般来说,在
2017-10-10 09:24:37

C语言编程程序的内存如何布局

(Text)、只读数据(RO Data)和读写数据(RW Data)。在程序运行之前,将动态生成未初始化数据(BSS),在程序的运行时还将动态形成堆(Heap)区域和(Stack)区域。一般来说,在
2017-10-15 10:57:10

C语言编程程序的内存如何布局

(Text)、只读数据(RO Data)和读写数据(RW Data)。在程序运行之前,将动态生成未初始化数据(BSS),在程序的运行时还将动态形成堆(Heap)区域和(Stack)区域。一般来说,在
2017-10-25 09:31:31

C语言编程程序的内存如何布局

(Text)、只读数据(RO Data)和读写数据(RW Data)。在程序运行之前,将动态生成未初始化数据(BSS),在程序的运行时还将动态形成堆(Heap)区域和(Stack)区域。一般来说,在
2017-10-27 09:24:21

C语言编程程序的内存如何布局

(Text)、只读数据(RO Data)和读写数据(RW Data)。在程序运行之前,将动态生成未初始化数据(BSS),在程序的运行时还将动态形成堆(Heap)区域和(Stack)区域。一般来说,在
2021-09-13 15:04:28

C语言编程程序的内存如何布局

(Text)、只读数据(RO Data)和读写数据(RW Data)。在程序运行之前,将动态生成未初始化数据(BSS),在程序的运行时还将动态形成堆(Heap)区域和(Stack)区域。一般来说,在
2016-08-20 17:03:39

C语言编程程序的内存如何布局

(Text)、只读数据(RO Data)和读写数据(RW Data)。在程序运行之前,将动态生成未初始化数据(BSS),在程序的运行时还将动态形成堆(Heap)区域和(Stack)区域。一般来说,在
2016-09-20 09:27:48

C语言编程程序的内存如何布局

生成代码(Text)、只读数据(RO Data)和读写数据(RW Data)。在运行时,除了以上三个区域外,还包括未初始化数据(BSS)区域和(Heap)区域和(Stack)区域。  二
2017-08-29 11:17:36

C语言编程程序的内存如何布局

生成代码(Text)、只读数据(RO Data)和读写数据(RW Data)。在运行时,除了以上三个区域外,还包括未初始化数据(BSS)区域和(Heap)区域和(Stack)区域。  二
2017-11-05 11:35:00

DSP编程技巧之19---详解cmd文件

存储空间。如果没有用到这个函数,则编译器不会自动创建.esysmem。  对于汇编器,它会自动创建.text, .bss和.data三个。我们可以使用#pragma CODE_SECTION
2014-08-20 11:40:13

GCC连接脚本学习笔记(转载)

的.text 代码.rodata 常量,例如字符串什么的.data 初始化的全局变量.bss没有初始化的全局变量其实没什么,可以说,都是固定的,所以一句话,照抄。段名字后面紧跟的是 vma ,也就是这个
2011-09-15 16:18:34

OSPI外部加载程序无法在STM32H7A3 MCU上读写咋办呢

/* Uninitialized data section */. = ALIGN(4);.bss :{ /* This is used by the startup in order to initialize
2022-12-23 06:26:51

RAM内存包括哪些部分呢

1. RAM内存 RAM内存包括:代码text)、数据(data)、bss、堆栈(head stack)2. 编译器编译结果分析编译结果有代码text)、数据(data)、bss
2022-02-28 07:24:50

RTT Studio ch32v307的内存最大化

就看出来了(不了解的也没关系,马上的ch32我会出手,笑),没错,这就是我要的内存最大化!把bss结尾作为堆起始地址,RAM的最高地址处作为结尾地址。CH32V和STM32的链接脚本略有不同
2023-02-07 11:55:37

STM32 KEIL下的堆栈设置

;//静态初始化区p1= (char *)malloc(10);//区strcpy(p1,"123456");//"123456"放在常量区 }所以区别
2015-02-10 10:18:52

STM32 KEIL下的堆栈设置

ZI-data=1632 编译后,就会发现这么个程序已用了1600多的RAM,要是在51单片机上,会心疼死了,这1600多的RAM跑哪儿去了,分析map,会发现是占用的 在
2018-07-04 02:28:49

STM32堆栈区划分

STM32堆栈区(一)一个由C/C++编译的程序占用的内存分为以下几个部分:区(stack):编译器自动分配释放,存放函数的参数值,局部变量的值。操作方式类似于数据结构中的区(heap
2022-01-20 08:32:41

STM32堆栈的地址是怎么得出来的?

STM32堆栈的地址是怎么得出来的?
2021-11-26 07:14:55

STM32L072的 __libc_init_array中的硬故障如何解决?

libc_init_array 错误,但稍后会出现更多问题。此外,使用优化只是一个短期解决方案。知道是什么导致了这个错误吗?下面是编译器命令行和项目的链接器文件:海湾合作委员会的论点:“ C
2022-12-30 07:40:56

STM32中的区别是什么

区别是什么?的空间是如何进行分配的?
2021-11-29 07:05:28

lcd_3.5_4.3显示不是全屏

) *(.text)}. = ALIGN(4);.rodata : { *(.rodata) }. = ALIGN(4);.data : { *(.data) } __bss_start = .; .bss
2019-06-17 05:45:30

stm32的相关资料推荐

关于已经是程序员的一个月经话题,大部分有是基于os层来聊的。那么,在赤裸裸的单片机下的是什么样的分布呢?以下是网摘:刚接手STM32时,只编写一个int main(){while(1
2022-01-25 06:54:56

stm32是怎么获取大小的+ucos iii

是能在KEIL UV4上成功运行的,初步怀疑是的分配有问题(因为ucosiii中要用malloc动态分配内存),所以我想知道stm32是如何获取的信息的,我怎么才能让它知道的大小以及地址
2014-03-28 15:46:57

u-boot.lds上面的 “.”指的是当前位置?

/boot_init.o (.text) *(.text)}. = ALIGN(4);.rodata : { *(.rodata) }. = ALIGN(4);.data : { *(.data) }. = ALIGN(4
2019-08-05 01:41:52

“新”运算符导致C++项目崩溃要如何处理?

/* The program code and other data goes into FLASH */.text :{ . = ALIGN(4); *(.text)/* .text sections
2023-02-01 06:51:20

【HarmonyOS】鸿蒙内核源码分析(内存管理篇)

NULL,这些变量经过编译后是放在了BSS的,运行时占用内存空间,如此编译出来的ELF包就变小了。.rodata,该段也叫常量区,用于存放常量数据,ro就是Read Only之意。text 是用于存放
2020-10-14 12:05:22

【OK210试用体验】u-boot篇 -- u-boot内存分布

。 SDRAM_BASE 和 TEXT_BASE 的定义位于 include/configs/smdkv210.h中,可以根据自己单板的要求来修改地址。 _end和__bss_start为链接脚本文件中最后定义的bss
2015-09-07 16:48:34

【创龙TMS320C665x开发板试用】创龙例程中的CMD配置问题

变量(近) */.rodata/* 全局及静态常量(近) */.bss/* 未初始化的全局及静态常量 */}>DDR3platform_lib >DDR3/* 平台库 */}但修改后成如下
2016-04-17 16:06:13

【原创】单片机C语言程序的存储区域解读

data)已初始化数据是在程序中声明,并且具有初值的变量,这些变量需要占用存储器的空间,在程序执行时它们需要位于可读写的内存区域内,并具有初值,以供程序运行时读写。4、未初始化数据BSS)未
2021-07-04 19:05:57

一文浅析ARM U-boot SPL的源码

。SPL是由固化在芯片内部的ROM引导的。我们知道很多芯片厂商固化的ROM支持从nandflash、SDCARD等外部介质启动。所谓启动,就是从这些外部介质中搬移一固定大小(4K/8K/16K)的代码
2022-06-06 16:08:50

为什么重定位的时候BSS不拷贝过去?

学习毕业班,有几个疑惑的问题,想请教大家,希望解答啊。(1)为什么重定位的时候BSS不拷贝过去?如果在SDRAM中调用这些BSS定义的变量或者地址,不是需要在SDRAM进行地址的转换吗?就跟
2019-07-29 23:19:02

什么是?什么是

,程序执行过程中溢出,极大可能的影响程序、系统的稳定,严重时会造成程序、系统的崩溃,所以堆栈溢出检测十分重要且必要。什么是,什么是都是指预先分配的空间,有大小限制,两者通常是相邻的两个内存区域(RTOS中任务的可能不相邻),供程序使用,的最大差异是,空间通过xxmal...
2021-12-22 06:09:46

使用std::string但它给了我一链接器错误是怎么回事?

, DATA 1 .rodata 00004e783ffe8d903ffe8d9000000e702**4 CONTENTS, ALLOC, LOAD, DATA 39 .bss
2023-06-12 07:17:33

内存分布

*p1;//全局未初始化区 .bss 4.const int A = 10; //.rodata 5.volatile const int B = 10;//.data 6.main
2014-06-23 22:43:36

单片机区别在哪

文末有图和程序帮助理解!!!区别可以用如下的比喻来看出:使用就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走不必理会切菜、洗菜准备工作和洗碗、刷锅扫尾工作他
2022-01-20 08:31:10

单片机C语言程序的存储区域解读

data)已初始化数据是在程序中声明,并且具有初值的变量,这些变量需要占用存储器的空间,在程序执行时它们需要位于可读写的内存区域内,并具有初值,以供程序运行时读写。4、未初始化数据BSS)未
2021-07-13 17:02:09

单片机下的是什么样的分布呢?

是基于os层来聊的。那么,在赤裸裸的单片机下的是什么样的分布呢?以下是网摘:刚接手STM32时,只编写一个int main(){while(1);}BUILD://Prog...
2022-01-25 07:07:39

单片机中有什么区别

M0中的一、空间的区别:(1)区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值,其操作方式类似于数据结构中的。(2)区(heap):一般由程序员分配和释放
2021-11-22 06:23:11

单片机的内存使用问题汇总

对单片机编程后,程序的代码databssrodata都存放在Flash中。当单片机上电后,初始化汇编代码将databss,复制到RAM中,并建立好堆栈,开始调用程序的main
2021-12-13 07:55:57

发烧友传教-嵌入式u-boot中标号_start的值的问题

关于u-boot中标号_start的值的问题 为什么编译后_start标号的值0x33f80000,而不是0x00000000?下面来详细分析一下。大家都知道U-BOOT分为两个阶段,第一阶
2013-12-02 11:14:02

变量的相关资料推荐

组成,分别是:代码,数据。代码(.text)包含代码逻辑(函数),以及宏定义(#define)常量。数据包含3部分:.bss,.rodata,.data。 .bss: Block Started by Symbol,存放程序中未初始化的全局变量。...
2021-12-15 09:17:25

地址0x0处的C6713数据验证失败

常量 */ .bss > DATA_SRAM /* .bss 为程序中的全局和静态变量保留存储空间 */ .data > DATA_SRAM /* .data 存放已初始化数据
2019-01-14 09:50:11

如何设置堆栈指针和清理BSS

嵌入式ARM开发环境下,设置堆栈指针和清理BSS的意义
2021-02-04 06:26:21

嵌入式c语言指针指向常量相关资料分享

地址的,原因是字符串为常量,c语言编译器会对一样的常量进行操作,内存中只保留一份copy。ps:c语言中常量是放在.rodata中,.rodata是在.text代码中。...
2022-01-24 06:32:29

嵌入式系统常见的内存相关资料下载

BSS, DATA, RODATA, TEXT, STACKBSS: 未初始化的外部变量DATA: 初始化的外部变量RODATA: 初始化的外部变量,但是值不能被修改TEXT: 程序代码STACK: 自动变量
2021-12-17 07:43:53

应大家要求详细讲解下C语言内存分配-通俗理解

可以看出程序在未运行前,没有调入到内存时,分为三个部分:代码区(text)、数据区(data)、未初始化数据区(bss)。(1) 代码区(text)存放CPU可执行的机器指令,由于程序被经常使用,防止其
2016-10-08 14:13:41

怎么才能实现eclipse+jlink在RAM中调试代码?

/* The program code and other data goes into FLASH */ .text : { . = ALIGN(4); *(.text)/* .text sections
2024-03-08 07:20:32

我的U-Boot链接脚本笔记

);/* 4字节对齐 */.rodata : { *(.rodata) }/* 指定只读数据 */. = ALIGN(4);/* 4字节对齐 */.data : { *(.data) }/* 指定
2015-07-22 10:04:22

操作系统进程管理

记录内存页表和程序信息, 说白了就是管理内存中的程序(data, code, rodata, bss), 应用程序的顶地址
2019-08-07 07:38:19

教你一种查看ARM芯片内部MAP文件的方法

地址向低地址,区访问是从低地址向高地址。Map文件的阅读:.data(数据) 初始化的全局变量和静态变量.bssBSS)未初始化的全局变量和静态变量,编译器自动初始化。在MDK(Keil)编译
2022-05-13 10:59:17

教您布局C语言编程程序的内存

(Text)、只读数据(RO Data)和读写数据(RW Data)。在程序运行之前,将动态生成未初始化数据(BSS),在程序的运行时还将动态形成堆(Heap)区域和(Stack)区域。一般来说,在
2016-10-06 16:38:58

教您布局C语言编程程序的内存

生成代码(Text)、只读数据(RO Data)和读写数据(RW Data)。在运行时,除了以上三个区域外,还包括未初始化数据(BSS)区域和(Heap)区域和(Stack)区域。  二
2014-05-16 10:58:11

教您布局C语言编程程序的内存

生成代码(Text)、只读数据(RO Data)和读写数据(RW Data)。在运行时,除了以上三个区域外,还包括未初始化数据(BSS)区域和(Heap)区域和(Stack)区域。  二
2014-05-16 11:01:27

最简单的u-boot

) } //在链接脚本里 .text表示代码内存的代码。代码放在0x33f80000,也就是0x33f80000开始执行程序. = ALIGN(4);.rodata : {*(.rodata
2020-01-15 20:49:42

求助,谁知道CH56x系列.BSS后面400多个字节谁在使用?

、有谁知道这段区域什么东西在使用?2、这段区域是否固定大小?3、如果非固定大小,在连接脚本中如何把这段包含进去?如有谁知道,麻烦邮件【个人信息保护,已隐藏】通知我,感激不尽!!从.bss_ebss结束开始打印的内存(未使用RAM)内容连接脚本文件
2022-05-20 07:05:55

汇编语言r0和r1之间有什么区别

ARM裸机第一期,第13课 代码重定位;源码在目录005_ARM裸机1期加强版\源码文档图片\源码\012_relocate\009老师的汇编代码:/* 重定位text, rodata, data
2019-08-30 05:45:12

浅谈textdatabss

,程序2位于data,两者的区别在于: 全局的未初始化变量存在于bss中,具体体现为一个占位符,全局的已初始化变量存于data中,而函数内的自动变量都在上分配空间。 bss不占用可执行文件空间
2017-08-21 15:51:25

清除BSS,加入bss_loop后LED就不工作了怎么解决?

清除BSS,加入bss_loop后,LED就不工作了
2023-09-27 06:42:48

硬件层面的基本介绍

关于真的了解吗?大家可能会以为我今天准备跟你们聊的是数据结构偏软件层面的,不过由于这方面内容涉及较多,偏软件层面的我会在后期文章中着重讲解,所以今天给大家带来的主角是硬件层面
2022-03-01 07:40:08

请教关于C55X软件开发流程

好多教材上都说,C编译器(得到汇编程序asm)产生的有好多种,如.text, .cinit, .stack等等,但是汇编器得到的COFF文件的中只有.text, .bss, .data
2018-07-30 09:06:12

请问STM32在芯片启动时如何知道.BSS应该寻址到哪里,范围是多少?

STM32在芯片启动时如何知道.BSS应该寻址到哪里,范围是多少?我们知道下载到flash中的固件包含.text,.data信息,而.bss应该是系统动态建立的,但是芯片是怎么知道.BSS的地址和范围的呢?!
2022-12-05 07:17:50

请问TMS320F2809中的L0/L1/H0 SARAM双重映射数据和程序的地址空间能重合吗?

、H0(SARAM)为程序或者数据之后,M0、M1、L0、L1、H0(SARAM)应该各自放下面哪些?有什么要求吗?未初始化块(data).bss 存放全局和静态变量.ebss长调用的.bss(超过
2018-10-24 15:50:16

请问U-Boot.lds存在哪些问题

secname 段名{cpu/arm920t/start.o(.text) //大括号,应该为contents,指示该段存放的内容*(.text)}. = ALIGN(4);//以下类似.rodata
2019-07-17 05:45:23

请问stm32区和区的如何设置大小

里边的区设置的大小。现在的问题是我把区和区分配的大小已经加大了过一时间还是死机,那么如何根据编译出来的各项内容的大小定义区和区的大小呢?还有如何确定是不是ram空间不够用呢
2018-12-17 08:48:05

请问数据/代码/BSS//堆存放什么量?

请问数据/代码/BSS//堆存放什么量?
2021-12-03 06:06:00

请问这样的脚本是不是对所有的程序通用?

请问这样的脚本是不是对所有的程序通用?SECTIONS {. = 0x00; .text :{ *(.text) }.rodata ALIGN(4) : {*(.rodata)} .data
2019-07-10 05:45:15

请问链接脚本文件里面的代码,数据bss的位置可以更改吗?

(4) : {*(.rodata)} //3.data ALIGH(4): {*(.data)} //4.bss ALIGH(4) : {*(.bss) *(COMMON)} //5}代码都在最前面,数据在其后,bss在最后,这种位置顺序是否可以更改呢?比如说把代码放到最后的位置还可以吗?
2019-06-25 02:25:48

软件中的堆栈,是不同的东西吗?

区和区有什么不同的地方
2023-10-10 07:12:54

链接脚本对一些命令不了解

(.text)+3)&~(0x03)) {*(.rodata*)} .data ALIGN(4): AT((LOADADDR(.rodata)+SIZEOF(.rodata)+3)&
2019-04-25 04:09:07

鸿蒙内核源码分析(内存管理篇):虚拟内存和物理内存是怎么管理的

可能发现了,鸿蒙内核几乎所有的全局变量都没有赋初始化值或NULL,这些变量经过编译后是放在了BSS的,运行时占用内存空间,如此编译出来的ELF包就变小了。.rodata,该段也叫常量区,用于存放
2020-11-20 10:54:31

嵌入式c语言指针指向常量

地址的,原因是字符串为常量,c语言编译器会对一样的常量进行操作,内存中只保留一份copy。ps:c语言中常量是放在.rodata中,.rodata是在.text代码段中。...
2021-11-29 17:51:0412

**单片机的RAM 和ROM 存储了哪些东西?**

首先从代码编译的结果来看首先从代码编译的结果来看text data bss dec aaa bbb ccc ddd首先text 意思就是代码,下方数字就是代码段所占空间大小,单位为字节
2021-12-20 19:14:109

基础知识——嵌入式内存使用分析(text data bss及堆栈)

1. RAM内存 RAM内存包括:代码段(text)、数据段(data)、bss段、堆栈段(head stack)2. 编译器编译结果分析 编译结果有代码段(text)、数据段(data
2022-01-13 15:47:240

C语言的常量-2

在C语言中,字符型常量是最特别的一种常量。他的特别之处在于我们需要对其使用指定的定界符对其进行限制。定界符为 ‘’ 。字符型常量可以分为两种,一种是字符常量,另一种是字符串常量。字符常量和字符串常量区别在于:字符常量常常指一个字符,而字符串常量指的是一串字符。
2023-02-21 15:02:51388

已全部加载完成