c - BSS 是程序文件的一部分吗?

标签 c memory layout memory-management

<分区>

Possible Duplicate:
.bss section in elf file

你好,

BSS(Block started by symbol) 是程序文件 (a.out) 的一部分。假设我在我的 C 程序中声明了一个全局变量 char buf[2048]。我用我的 c 程序制作了一个可执行文件 (a.out)。 buf 的 2048 字节会成为 a.out 的一部分吗?还是 buf 所需的内存量仅在程序文件执行期间分配?

当 size 命令显示为文本段、初始化数据段和可执行文件 (a.out) 的 BSS 分配的内存时,我感到困惑

最佳答案

不,2048 字节实际上不会占用文件“a.out”中的任何空间,假设您有一个现代 Linux 操作系统,其中文件“a.out”的格式实际上是 ELF,而不是格式命名为“a.out”,过去是这样。有关 ELF 格式的更多信息,请参阅 http://en.wikipedia.org/wiki/Executable_and_Linkable_Format .

关于c - BSS 是程序文件的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6086856/

相关文章:

c - 可以将不同的数据类型存储在 C 中相同的分配内存中吗?

javascript - IE 中的宽度必须比 ff 和 ch 多 2 px

qt - 使用 QStackedLayout 创建一个小部件

c - 删除嵌套函数调用中生成的中间指针的最佳做法是什么?

c - 替换链表中的节点值

windows - 内存保留和提交

ios - UIBarButtonItem 让我的 iPhone 应用崩溃

在函数中复制结构体并在c中返回副本

c - 我在生成随机数时遇到问题 (C)

java - 多布局 Android 应用程序