Elf32_Phdr的p_filesz和p_memsz之间的差异

Elf32_Phdr的p_filesz和p_memsz之间的差异,elf,Elf,我无法理解Elf32_Phdr的p_filesz和p_memsz之间的确切区别。 有人能帮我理解吗 从elf文档中,我看到了以下关于p_filesz和p_memsz的定义,但我并不完全清楚 p_filesz:该成员给出段的文件映像中的字节数;可能是 零。 p_memsz:该成员给出段的内存映像中的字节数;信息技术 可能是零 “文件映像”和“内存映像”到底是什么 如您在评论中所述,p_filesz字段对应于文件中段的字节大小,而p_memsz是段的内存大小。p_memsz大于(或等于)p_file

我无法理解Elf32_Phdr的p_filesz和p_memsz之间的确切区别。 有人能帮我理解吗

从elf文档中,我看到了以下关于p_filesz和p_memsz的定义,但我并不完全清楚

p_filesz:该成员给出段的文件映像中的字节数;可能是 零。 p_memsz:该成员给出段的内存映像中的字节数;信息技术 可能是零


“文件映像”和“内存映像”到底是什么

如您在评论中所述,
p_filesz
字段对应于文件中段的字节大小,而
p_memsz
是段的内存大小。
p_memsz
大于(或等于)
p_filesz
的原因是可加载段可能包含
.bss
节,该节包含未初始化的数据。将这些数据存储在磁盘上是浪费的,因此它只会在ELF文件加载到内存后占用空间。这一事实由
.bss
部分的
SHT_NOBITS
类型表示


根据ELF规范,在
p_memsz
大于
p_filesz
的情况下,段初始化区域后面的额外字节被定义为保持值0。

我想现在我理解了p_memsz和p_filesz之间的区别。p_filesz告诉elf文件中这个可存储段的实际/确切大小,而p_memsz是内存中该段的总大小。所以,这个条件(p_)