2010-11-28 61 views
3

在测试中,我在程序的bss部分中运行内存,在我写入任何内容之前,始终将其初始化为零。这是否是巧合,还是系统在将这些内存页面交给我之前“清理”这些内存页面?我在Ubuntu上使用nasm汇编程序(如果可能会有所不同)。Linux程序集; bss节内存初始化为0?

回答

3

您的应用程序的可执行文件(ELF)有一个BSS段的大小信息,当它启动时,内核为BSS段分配一块内存,并将其清除为0,这由ABI(应用程序二进制接口)定义,如此你不必担心在不同的机器上有不同的东西。

0

是BSS被初始化为零。

+0

你有任何规范*(在小写的意义上)*参考吗? – 2010-11-28 17:14:52

+0

好吧,man gcc说初始化为零的变量放在BSS中,所以为了使它合法,BSS必须初始化为零。 – lijie 2010-11-28 17:17:15