编译对象的布局

use*_*620 17 c c++ gcc visual-c++

有没有办法 - 就像查看预处理的结果一样gcc -E- 看看编译成目标文件后我的对象是什么样的?

我说的是GCC,但包括MSVC在内的解决方案没问题.

j_r*_*ker 27

对于Visual C++:

我终于设法使用此处此处的信息挖掘MSVC++支持的(隐藏得很好!)未记录的编译器标志.他们来了:

/d1reportSingleClassLayoutXXX
/d1reportAllClassLayout
Run Code Online (Sandbox Code Playgroud)

(替换XXX为班级名称)


pax*_*977 6

对于GCC编译的可执行文件,签出Pahole.它将向您展示编译器如何布置您的结构/类以及它们中是否有"漏洞".由于内存对齐规则,孔是填充的.


小智 0

目标文件包含二进制数据 - 大多数编译器可以输出的唯一更高级别是汇编程序,因此如果您无法读取,那么您就不走运了。但是,请查看此问题以获取该领域的更多信息。