BSS段:(bsssegment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文BlockStartedbySymbol的简称。BSS段属于静态内存分配。数据段:数据段(datasegment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(codesegment/textsegment)通常是指用来存放 ...
区别很明显,程序1位于bss段,程序2位于data段,两者的区别在于: 全局的未初始化变量存在于bss段中,具体体现为一个占位符,全局的已初始化变量存于data段中,而函数内的自动变量都在栈上分配空间。 bss不占用可执行文件空间,其内容由操作系统初始化(清零),裸机程序需要自行手动清零。 而data段则需要占用可执行文件空间...
1、通过size命令查看,可以看到左侧未初始化数组变量的程序bss段大约就是4M大小,右侧初始化数组变量的程序data段大约是4M大小,从此也可以看出来未初始的全局变量存放在bss段,初始化的全局变量存放在data段中。 2、通过ls命令查看,分别可以看到两者的可执行文件的大小差距很大(分别为8328字节、4202648字节),未初始化的全...
BSS节不包含任何数据,只是简单的维护开始和结束的地址,以便内存区能在运行时被有效地清零。BSS节在应用程序 的二进制映象文件中并不存在。 3、将.data和.bss分开的理由是为了节约磁盘空间,.bss不占实际的磁盘空间,为什么.bss不占磁盘空间呢? #include <stdio.h> int a[1000]; int b[1000] = {1}; int m...
通过小代码体验程序中BSS段和DATA段的差异 BSS(Block Started by Symbol)用来存储未初始化的全局变量,值为0的通常会被编译器认为未初始化,属于静态内存分配区,不会占用程序文件空间 DATA 用来存储已经初始化的全局变量,也属于静态内存分配区,会占用程序文件空间 TEXT 代码段,存储程序执行的代码指令,会占用程序文件...
int bss_a[100000]; int bss_b; int main() { return 0; } 经过编译,第一个例程的.o文件大小为392KB,第二个例程.o文件大小仅为1KB。利用objdump -D指令分别查看编译后文件的段分布,如下所示: 例程1: Disassembly of section .data: 0000000000000000 <data_a>: 0: 01 00 2: 00 00 4: 02 00 6...
与bss相比,data就容易明白多了,它的名字就暗示着里面存放着数据。当然,如果数据全是零,为了优化考虑,编译器把它当作bss处理。通俗的说,data指那些初始化过(非零)的非const的全局变量。它有什么特点呢,我们还是来看看一个小程序的表现。 int data_array[1024 * 1024] = {1}; ...
.bss段和.data段的区别 一个程序本质上都是由 bss段、data段、text段三个组成的。这样的概念,不知道最初来源于哪里的规定,但 在当前的计算机程序设计中是很重要的一个基本概念。而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的 问题。
百度试题 结果1 题目说明。text段、。data段和。bss段分别包含什么内容?相关知识点: 试题来源: 解析 答:。text 段(文本段),通常包含可执行代码; .data 段(数据段),通常包含初始化数据; 。bss 段(保留空间段),通常为未初始化变量保留存储空间。
与bss相比,data就容易明白多了,它的名字就暗示着里面存放着数据。当然,如果数据全是零,为了优化考虑,编译器把它当作bss处理。通俗的说,data指那些初始化过(非零)的非const的全局变量和静态变量。 由此可见,data类型的全局变量是即占文件空间,又占用运行时内存空间的。 rodata(read only data) rodata的意义同样明...