在C编程中,当程序执行时,程序中使用的所有数据将被放置在不同的部分中。我知道未初始化的全局变量和staic变量存储在.bss部分中。初始化的所有全局变量和静态变量都存储在数据段中。如果数据段已经存在,那么使用.bss?
的目的是什么答案 0 :(得分:2)
引用Wikipedia:
通常只存储bss部分的长度,但不存储数据 在目标文件中。程序加载器分配并初始化 加载程序时bss部分的内存。操作 系统可以使用称为零填充按需的技术来有效地进行 实施bss部分(McKusick& Karels 1986)。嵌入式 软件,bss段被映射到初始化为的内存中 输入main()之前由C运行时系统调零。
因此,它是一种快速简便的方法,可将一组变量初始化为零,而不是占用程序图像中的空间,明确将它们设置为零。
答案 1 :(得分:0)
在C运行时初始化期间,.bss和.data的处理方式通常不同。
在某些系统上,.data部分是从压缩数据集初始化的,其中.bss只是设置为零
换句话说,处理未初始化的数据和初始化的数据可能很有用。