我们都知道程序在进入main函数之前会进行全局变量的初始化,接受main函数的两个参数,完成堆栈的初始化等操作。
程序的启动过程看起来更像是这样的(伪代码)
那么在main函数返回之后是不是意味着程序的结束呢?
这段代码展示了在main函数返回之后,程序并没有结束:
#include <stdio.h>
#include <stdlib.h>
void foo(void)
{
printf("bye!\n");
}
int main()
{
atexit(&foo);
printf("end of main\n");
return 0;
}
运行结果如下:
更详细的内容参见《程序员的自我修养-链接,装载与库》P318