0

我知道 bss 段包含未初始化的变量,这些变量将被赋予 0 作为初始值,但为什么我们不只使用数据段来存储它们呢?

我读到它加快了执行速度,因为 os 加载器通过调用 memset 一次初始化所有这些变量,但是,我不太相信,因为加载器也可以调用 memset 来在数据段中初始化它们!

4

1 回答 1

2

因为您可能有大量未初始化的值。如果您要为此目的使用数据部分,则必须用零(或任何值,就此而言,但必须有一些东西)填充二进制文件。想象一下在可执行文件中添加一兆字节的零......

于 2012-01-20T08:01:20.743 回答