在学习 C 的同时做一些实验时,我遇到了一些奇怪的事情。这是我的程序:
int main(void) {sleep(5);}
编译时,可执行文件的文件大小为 8496 字节(与 26 字节的源代码相比!)这是可以理解的,因为调用了 sleep 并且在可执行文件中写入了调用指令。另一点是没有睡眠,可执行文件变成 4312 字节。
int main(void) {}
我的主要问题是运行第一个程序时会发生什么。我使用 clang 编译和 Mac OS X 运行它。结果(根据活动监视器)是程序使用了 504KB 的“真实内存”。为什么程序只有 4KB 就这么大?我假设可执行文件已加载到内存中,但除了睡眠调用之外我没有做任何事情。为什么我的程序需要 500KB 才能休眠 5 秒?
顺便说一句,我使用睡眠的原因是能够首先使用活动监视器捕获正在使用的内存量。
我只是出于好奇而问,干杯!