我知道bss段包含未初始化的变量,这些变量将被赋予0作为初始值,但为什么我们不使用data段来存储它们呢?我读到它加快了执行速度,因为os加载器通过调用memset一次性初始化所有这些变量,然而,我不太相信,因为加载器也可以在data段中调用memset来初始化它们!
bss
data
vlju58qv1#
因为您可能有一个庞大的未初始化值集。如果要使用数据段来实现此目的,则必须用零(或任何值,但必须有 * 某个 *)填充二进制文件。想象一下在可执行文件中添加一兆字节的零。。
1条答案
按热度按时间vlju58qv1#
因为您可能有一个庞大的未初始化值集。如果要使用数据段来实现此目的,则必须用零(或任何值,但必须有 * 某个 *)填充二进制文件。想象一下在可执行文件中添加一兆字节的零。。