博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
全局/静态变量初始化为0放在bss段还是data段
阅读量:4261 次
发布时间:2019-05-26

本文共 551 字,大约阅读时间需要 1 分钟。

2013-6-4上午去面试,被鄙视了,技术公司大牛的风范,好犀利!不过我这题应该是蒙对了。。

 

如:static unsigned char s_test = 0;

这个静态变量是放到bss段还是data段呢,以下是我编译的结果:(全局变量也是如此)

 

1.看这样子,即使是初始化了,但是初始化的是0,还是放在bss段的

2.这里还有一个问题,即使是全局定义了一个变量,若后面程序不使用的话,还是默认不分配这个变量空间的.(兔子注:应该是被代码优化掉了,而不是不分配)

(至少说ARM的ADS编译器是如此,是否具有普遍性,暂时还不知道 -  - ! )

3.注:

可执行程序包括BSS段、(也称文本段)。

BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。

注意和的区别,BSS存放的是未初始化的,数据段存放的是初始化后的全局变量和静态变量。

UNIX下可使用size命令查看可执行文件的段大小信息。如size a.out。

来源:http://blog.csdn.net/zhengxianghdu/article/details/9022867

你可能感兴趣的文章
JavaScript中使用offset时遇到的bug
查看>>
java基础入门(一)
查看>>
Java基础入门(二)
查看>>
Java基础入门(三)
查看>>
Java基础入门(四)
查看>>
Java基础入门(十)
查看>>
Java基础入门(完结篇)
查看>>
Java进阶之面向对象(一)——继承
查看>>
Java进阶之自定义ArrayList&斗地主发牌案例
查看>>
JavaWeb之filter&listener&文件上传
查看>>
JavaWeb之Ajax&json
查看>>
BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用
查看>>
DDR2 SSTL_18标准
查看>>
DDR3的DQS_p/n信号电平摆幅变化不一致现象
查看>>
北大旁听生中的历史名人
查看>>
大唐凌烟阁开国廿四将
查看>>
Access数据库出现"Selected collating sequence not supported by the operating system."错误
查看>>
逻辑思维测试题
查看>>
如何用Easy CHM制作CHM格式电子书(帮助文档)
查看>>
为什么学习python
查看>>