2009-11-25 32 views

回答

1

the C standard [PDF鏈接](5.1.2.2.3):

從初始調用main函數的返回是相當於調用exit功能與由main功能返回的值它的論點;達到終止主函數}返回值0

它是exit函數負責調用與atexit註冊功能(見7.20.4.3在一切exit做的說明,標準)。

+0

是的,我正在逐步執行退出代碼,並且注意到它對atExit()有明確的調用。 有沒有另外一種方式來通過玩棧(不覆蓋返回地址),以便它在Main結束時進入myExit()函數。 謝謝! – Setzer 2009-11-25 19:29:26

+0

更可能的是編譯器發出的代碼:初始化全局變量;然後調用main;然後用main的返回值調用exit。 – 2009-11-25 19:42:36

6

在C中,main()函數實際上是由其他函數調用的,該函數內置於運行時。這個函數在main()函數結束後,還有幾件事需要清理。其中之一是調用已經在atexit()註冊的任何功能。這個函數實際上存儲了某種類型的函數指針的靜態列表,這些列表將在main()之後由運行時調用。

+1

該文件通常稱爲crt0.o;它基本上做了設置工作,然後執行'exit(main(argc,argv));' – 2009-11-26 06:04:52

相關問題