这个问题是关于逆向工程和 Microsoft 标准 C 库的。
当 C 程序正常终止时,即在 main()
结束时执行 return 0;
。发生了什么(请概括)。 具体来说,C 库调用的最后函数是什么?
最佳答案
您可以在“%Program Files%\Microsoft Visual Studio x.0\VC\crt\src”中找到 Microsoft CRT 的源代码。
可执行文件 (mainCRTStartup
) 的入口点在 crt0.c 中,或者,如果使用运行时 DLL,则在 crtexe.c 中。您可以看到在调用 main()
之后它调用了 exit()
。 exit()
的源代码在crt0dat.c 中。它调用 C 和 C++ 终止处理程序(关闭 stdio 句柄等),调用 atexit()
函数,最后调用调用 kernel32 的 ExitProcess() 的 __crtExitProcess()。
关于c++ - 当 C++ 程序在 Windows 上终止时,终止 stub 调用的最后一个函数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5619015/