【发布时间】:2021-04-07 19:06:45
【问题描述】:
当我创建一个小的 Mac Mach-O 可执行文件时,例如用 C 编写的“Hello World”,由于对齐填充,它的大小约为 48k。但与此同时,我可以在 .bss 部分定义 100k 的零(例如,通过指定 100k 字符的静态数组),它只向磁盘上的可执行文件添加了几个字节。
我想知道为什么填充(我想它只在加载后才起作用)没有以某种方式“打包”。
【问题讨论】:
-
如何在不知道可执行文件没有明确具有的结构的情况下“解包”?
-
BSS 部分没有“优化”,只是不存在。我知道没有可执行格式存储 BSS 部分。将部分归零是启动代码的任务。一些启动代码还会为该部分保留或提供内存。
标签: c gcc memory compilation mach-o