未初始化的全局变量为什么可以认为放在.bss 段?

SECTIONS bss段初始化分析 SECTIONS bss段初始化分析 都知道bss段需要初始化,但是这是为什么呢? 通过浏览资料,都会发现,bss段是不会出现在程序下载文件(*.bin .hex)中的,因为全都是0。如果把出现在程序下载文件中,会增加程序下载文件的大小。实际应用中,通常只需要把bss段的起始地址和结束地址保存起来,而不需要将程序下载文件中出现bss段(一堆0)将来真正运行程序的时候,再根据这两个数据进行bss段的初始化就行了。 以上这段文字是网上的资料说的。但是,可不可以让bss段出现在程序下载文件中呢?如果这样可以的话, 阅读详情

目标文件中,没有在.bss段分配空间,而是标记为COMMOM

未初始化的全局变量是弱符号。编译成.o时,占的大小是未知的,有可能别的地方还定义了,且定义的size更大。但是链接器是要符号判决的,是能知道大小的,最终在bss段为其分配空间(可执行文件)。

(3万字深度解析)Kaggle《房价预测:高级回归技巧》详解复现攻略 在这篇教程式文章中,我们从零开始完成了 Kaggle《房价预测:高级回归技巧》比赛的复现工作,涵盖了数据预处理、特征工程、模型训练、调优、解释和融合的完整流程。深入理解数据:阅读数据描述,结合常识对每个特征作出合理处理(如缺失值填充’None’表示无此设施 、异常值剔除 等)。对目标和偏态特征进行对数变换,使分布更平滑,从而更好满足模型假设并提升准确度。特征工程:我们创造了总面积、总浴室等新特征,整合信息提高模型可学习性。 阅读详情

相关推荐

Unity开发微信小游戏,使用Addressables管理游戏资源(本地进行远程测试)

快速构建Unity微信小游戏 使用Addressables管理游戏资源 使用小皮助手在本地进行远程资源加载测试

the_vnas的博客 6391

初始化的和未初始化的全局变量分别放在什么地方?BSS段的全称是啥?为啥用BSS 段,有啥好处

一.初始化的全局变量存放在数据段(data segment),数据段数据静态分配 二.未初始化的全局变量存放在bss段,BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。 “未初始化”这一说法其实并不准确,虽然.bss段在编译出的目标文件中是不占 空间的,但是c语言假设在程序的执行之前,运行时启动代码或者操作系统会负责将.bss段清零,而且许多c语

韦远科的专栏 1万+

保姆级教程:用Python仿真OFDM系统(附抗多径干扰优化方案)

本文提供了一份详细的Python仿真OFDM通信系统教程。通过NumPy和Matplotlib,从二进制比特流开始,逐步构建完整的OFDM系统模型,涵盖IFFT、循环前缀等核心概念。重点探讨了如何对抗多径干扰,并提供了优化方案,通过误码率曲线直观对比性能,适合通信工程学习和物理层开发实践。

weixin_29230649的博客 232

BSS段

(深入理解计算机系统) bss段,data段、text段、堆(heap)和栈(stack) 1 关于BSS段的大小 2 1. BSS段中的内容 2 2.BSS段在加载运行前的处理 3 3.BSS段的作用 3 4. 代码优化对BSS段的影响 3 5.Linux 下查看段属性的指令: 4 BSS大小实验 4 清除BSS段的一般做法 6 link脚本一般包含类似语句: 6   (深...

longtype的博客 1万+

MacOS下Mixly 2.0安装避坑指南:从Java环境到终端权限全解析

本文详细解析了在MacOS系统上安装Mixly 2.0时可能遇到的核心问题与解决方案。针对Java环境版本不兼容、MacOS Gatekeeper安全机制拦截以及终端权限不足三大常见障碍,提供了从检查并配置正确Java版本、安全设置绕过到彻底解决应用内部工具链权限的完整避坑指南,帮助用户顺利完成安装并正常使用。

weixin_29231725的博客 503

基因家族Motif 分析

MEME

hgz2020的博客 6317

全局/静态变量初始化为0放在bss段还是data段?

转自此博客 我们都知道: 1)有初始化的全局变量,该全局变量存放在data段 2)没有初始值的全局变量放在BSS段。 实际上在arm-linux-gcc这个开发环境中,如果全局变量的初始值是0,编译器会将该全局变量放在BSS段。 初始值是0的全局变量放在BSS段会有什么问题? 如果少了text代码帮他初始化为0,这个全局变量将会成为随机值。而不是0。 因此text段会有一段代码将BSS段初始化为0。 如下图: ...

weixin_44164489的博客 5217

混合开关电容DCDC变换器技术解析与工程应用指南

在电源设计领域,传统DCDC变换器在高降压比或高升压比场景下,往往面临占空比过窄、开关应力大、效率偏低等瓶颈。开关电容变换器虽能实现固定比例的电压变换,却受限于调节能力。混合开关电容DCDC变换器通过“开关电容网络粗调变比+电感式DCDC细调输出”的策略,兼顾高效率、高功率密度与宽调压范围。本文梳理了其典型拓扑(如2:1/4:1 SC+Buck)、关键对比、控制策略(含软充电)及工程应用中的常见问题,帮助电源工程师在服务器供电、快充、车载电源等场景下快速选型与调试。

weixin_29164185的博客 314

为什么存放未初始化的数据段称为.bss

为什么存放未初始化的数据段称为.bss

aoeaoao的博客 410

交换机端口模式详解:Access、Hybrid、Trunk

交换机是网络中至关重要的组件之一,用于连接各种设备并启用数据的高效流动。为了更好地管理和控制网络流量,交换机提供了不同的端口模式,其中包括Access、Hybrid和Trunk。本文将深入探讨这三种端口模式,详细解释它们的配置、特性和应用场景,以帮助网络管理员更好地理解和优化网络架构。

网络技术联盟站 4016

DTI-ALPS 指标计算(附代码),评估脑类淋巴系统功能

DTI-ALPS 指标计算(附代码),评估脑类淋巴系统功能

xxx 1051

.bss与COMMON以及它们之间的区别

.bss与COMMON #.bss中存放,未初始的全局变量或静态变量,以及被初始化为0的全局变量以及静态变量。在目标文件中.bss section不占据实际的空间,只是一个占位符。目标格式文件区分已初始化与未初始化变量是为了空间效率:在目标文件中,未初始化变量不需要占据任何实际的磁盘空间,运行时,分配这些变量,初始值为0; COMMON在节头部表中没有条目,是一个特殊的伪节(oseudosecti...

weixin_43730678的博客 3606

零基础NPU固件开发学习路线--1.4 学习路线与工具链:编译器、仿真器、调试器、烧录工具

本文系统介绍了NPU固件开发的学习路径与工具链。学习路线分为四个阶段:基础认知、环境搭建、模块开发和联调量产。重点讲解了交叉编译器、代码管理工具、调试器和烧录工具等核心工具链的使用方法。文章强调工具链在NPU固件开发中的关键作用,详细阐述了从代码同步到固件烧录的全流程开发闭环,为开发者提供了一条从零基础到独立开发的完整学习路径。

MHD0815的博客 116

初始化和未初始化的全局变量

一.初始化的全局变量存放在数据段(data segment),数据段数据静态分配二.未初始化的全局变量存放在bss段,BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。     “未初始化”这一说法其实并不准确,虽然.bss段在编译出的目标文件中是不占 空间的,但是c语言假设在程序的执行之前,运行时启动代码或者操作系统会负责将.bss段清零,而且许多c

mynameis000的专栏 2380

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

12.bss段的初始化

12.bss段的初始化 在C代码:有初始化全局的数据段,局部的栈,malloc部分的堆,未初始化的全局的bss段。 从上面的编译的信息知道: Bss段的起始地址:0001052c Bss段的结束地址:00010534 我们的hello变量的地址:00010530是落在bss段里的地址的。所以是存在bss段的。这就是未初始化的全局变量存放在bss段。 ...

ashe9657的博客 345

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

x210裸机程序中bss段是否会自动清空

BSS段清零的原因是因为这个段是BSS要说为什么要有BSS的话,历史就比较久远了。BSS段我所知道的起源是Unix最初的时候(当然,不排除可能有更早的情况)。变量分两种:局部变量、全局变量。根据C语法的规定,局部变量不设置初始值的时候,其初始值是不确定的,局部变量(不含静态局部变量)的存储位置位于栈上,具体位置不固定。全局变量(和静态局部变量)有专门数据段存储,初始值是0,具体位置是固定的。其实说到底,就两种,一种是位置固定(数据段里),一种是位置不固定的(栈上)。

weixin_53762042的博客 215

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

BSS段 data段 text段 堆heap 和 栈stack

BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。   数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。   代码段:代码段(code segment/text segment)通常是...

gioc的专栏 261

通过未初始化全局变量,研究BSS段和COMMON段的不同

本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。 作者:gfree.wind@gmail.com 博客:linuxfocus.blog.chinaunix.net 最近正在重温《程序员的自我修养》一书,由于水平比以前有所提升,所以读书的收获也不一样。

Notebook 1243

C代码内存区域划分

3、编译阶段未初始化的全局变量放在COM块,因为未初始化的全局变量为弱符号,要经过强弱符号的选择之后,才能确定具体选择的变量。2、初始化为0,和未初始化的(全局变量、静态全局变量和静态局部变量)放在.bss。1、初始化不为零的(全局变量、静态全局变量和静态局部变量)放在.data段。4、链接完成后未初始化的全局变量放在.bss段。5、.text存放指令。

doubleintfloat的博客 712

BSS段为什么一定要初始化

1. 什么是BSS段? 一个程序本质上都是由bss段、data段、text段三个组成的。 BSS段通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。 2. BSS段的特点 bss段是不会出现在程序下载文件(*.bin *.hex)中的,因为全都是0。如果把它们出现在程序下载文件中,会增加程序下载文件的大小。实际应用中,通常只需要把bss段的起始地址和结束地址保存起来,而不需要将程序下载文件中出现bss段(一堆0)将来真正运行程序的时候,再根据这两个数据进行bss段的初始化就行了.

小白变大白之路 2052

bss段和data段的区别

一、bss与data 一般情况下,一个程序本质上都是由bss段、data段、text段三个组成的——本概念是当前的计算机程序设计中是很重要的一个基本概念。而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题。 在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by...

weixin_41565755的博客 4718

什么是BSS段

<br />       今天学习IIC时,发现有清除BSS段的功能代码,由于不知道什么是BSS段,所以上网搜索相关知识,记录在此。<br />       BSS(Block Started by Symbol)这个词最初是UA-SAP汇编器(United Aircraft Symbolic Assembly Program)中的一个伪指令,用于为符号预留一块内存空间。该汇编器由美国联合航空公司于20世纪50年代中期为IBM 704大型机所开发。后来BSS这个词被作为关键字引入到了IBM 709和

heaiding的专栏 2872

ELF格式与bss段

ELF(Executable Linkable Format)是Linux系统下的一种可执行可链接文件的格式,是COFF格式的变种。在Linux系统中包括了可重定位文件(.o文件),可执行文件(/bin/bash文件),共享目标文件(.so)和核心转储文件(core dump)。 ELF文件头(ELF Header):位于ELF文件的头部,包含了描述整个文件的基本属性。 代码段(.text):

rock_joker的博客 2888
上一篇: 程序员的自我修养-笔记
下一篇: 可执行文件为什么又叫映像文件image?——程序员的自我修养——链接、装载与库》笔记
冰箱里有碗
博客等级 码龄3年 425粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值