Meh*_*dad 5 c null executable exe zero
我已经编译了一个绝对没有任何东西的C文件(只是一个main返回...甚至没有"Hello,world"得到打印),我用各种编译器编译它(MinGW GCC,Visual C++,Windows DDK,等等.).所有这些都与C运行时链接,这是标准的.
但我得不到的是:当我在十六进制编辑器(或反汇编程序)中打开文件时,为什么我看到16 KB中几乎有一半只是0x00字节或0xCC字节的大部分?对我来说这似乎很荒谬......有什么方法可以阻止这些事件发生吗?为什么他们首先在那里?
谢谢!
可执行文件通常包含代码段和至少一个数据段.我猜这些都有一个标准的最小尺寸,可能是8K.未使用的空间用零填充.另请注意,以更高级别(而不是汇编语言)编写的EXE在您自己的代码和数据的直接转换之上包含一些额外的内容:
main(),然后在退出后清除main())尽管如此,由于可执行文件通常应该做某事(即它们的代码和数据段确实包含有用的东西),并且存储很便宜,默认情况下没有人优化你的情况:-)
但是,我相信大多数编译器都有命令行参数,您可以使用这些参数强制它们优化空间 - 您可能希望使用该设置检查结果.
以下是有关EXE文件格式的更多详细信息.
| 归档时间: |
|
| 查看次数: |
1484 次 |
| 最近记录: |