.bss的目的是什么?

时间:2016-06-16 09:17:26

标签: c operating-system

在C编程中,当程序执行时,程序中使用的所有数据将被放置在不同的部分中。我知道未初始化的全局变量和staic变量存储在.bss部分中。初始化的所有全局变量和静态变量都存储在数据段中。如果数据段已经存在,那么使用.bss?

的目的是什么

2 个答案:

答案 0 :(得分:2)

引用Wikipedia

  

通常只存储bss部分的长度,但不存储数据   在目标文件中。程序加载器分配并初始化   加载程序时bss部分的内存。操作   系统可以使用称为零填充按需的技术来有效地进行   实施bss部分(McKusick& Karels 1986)。嵌入式   软件,bss段被映射到初始化为的内存中   输入main()之前由C运行时系统调零。

因此,它是一种快速简便的方法,可将一组变量初始化为零,而不是占用程序图像中的空间,明确将它们设置为零。

答案 1 :(得分:0)

在C运行时初始化期间,.bss和.data的处理方式通常不同。

在某些系统上,.data部分是从压缩数据集初始化的,其中.bss只是设置为零

换句话说,处理未初始化的数据和初始化的数据可能很有用。