我无法理解 Elf32_Phdr 的 p_filesz 和 p_memsz 之间的确切区别。任何人都可以帮助我理解这一点吗?
从 elf 文档中,我看到以下 p_filesz 和 p_memsz 的定义,但我并不完全清楚。
p_filesz :该成员给出了段的文件映像中的字节数;它可能为零。p_memsz :该成员给出了段的内存映像中的字节数;它可能为零。
“文件映像”和“内存映像”究竟是什么?
小智 11
正如您在评论中已经指出的那样,该p_filesz字段对应于文件中段的字节大小,而 thep_memsz是段的内存大小。p_memsz大于(或等于)的原因是p_filesz可加载段可能包含一个.bss段,该段包含未初始化的数据。将这些数据存储在磁盘上会很浪费,因此它只会在 ELF 文件加载到内存中时才占用空间。该事实由节的SHT_NOBITS类型指示.bss。
根据 ELF 规范,在p_memsz大于的情况下,p_filesz段初始化区域后面的额外字节被定义为保持值 0。
| 归档时间: |
|
| 查看次数: |
2497 次 |
| 最近记录: |