C语言 bss段的作用是什么?

jmo0nnb3  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(94)

我知道bss段包含未初始化的变量,这些变量将被赋予0作为初始值,但为什么我们不使用data段来存储它们呢?
我读到它加快了执行速度,因为os加载器通过调用memset一次性初始化所有这些变量,然而,我不太相信,因为加载器也可以在data段中调用memset来初始化它们!

vlju58qv

vlju58qv1#

因为您可能有一个庞大的未初始化值集。如果要使用数据段来实现此目的,则必须用零(或任何值,但必须有 * 某个 *)填充二进制文件。想象一下在可执行文件中添加一兆字节的零。。

相关问题