突っ込んで検討します。main関数の実行が終わったら、コードの一部を実行する可能性がありますか?

960 ワード

atexit()関数を使って関数を登録することができます。コードは以下の通りです。

#include "stdafx.h"
#include <iostream>
using namespace std;
//int _onexit(void (*function)(void)); //
void f1()
{
 cout << "f1()" << endl;
}
void f2()
{
 cout << "f2()" << endl;
}
void f3()
{
 cout << "f3()" << endl;
}
void f4()
{
 cout << "f4()" << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
 atexit(f1);
 atexit(f2);
 atexit(f3);
 atexit(f4);
 cout << "main function." << endl;
 return 0;
}
出力結果:

main
f4()
f3()
f2()
f1()
注意:atexit関数はスタックの規則に従って登録の関数を呼び出し、最初に呼び出された最後の出力で、その後に呼び出された最初の出力です。PS:以上はネット上の大部分の人が思っています。まだ多くの人が異なった意見を持っています。ここで、一定の見方を保留します!足りないなら、ご叱正をお願いします。