次の方法で共有


atexit

終了時に指定された関数を処理します。

構文

int atexit(
   void (__cdecl *func )( void )
);

パラメーター

func
呼び出される関数。

戻り値

atexit は正常終了した場合は 0、エラーが発生した場合は 0 以外の値を返します。

解説

atexit 関数には、プログラムが正常に終了したときに呼び出される関数 func のアドレスが渡されます。 atexit を連続して呼び出すと、後入れ先出し法 (LIFO) 順で実行される関数のレジスタが作成されます。 atexitに渡される関数はパラメーターを受け取ることはできません。 atexit_onexit は、ヒープを使用して関数のレジスタを保持します。 したがって、登録可能な関数の数は、ヒープ メモリの量によってのみ制限されます。

atexit 関数のコードには、atexit 関数が呼び出されたときに既にアンロードされている可能性がある DLL への依存関係を含めることはできません。

ANSI 準拠のアプリケーションを生成するには、ANSI 規格の atexit 関数を使用します (同様の _onexit 関数ではない)。

要件

ルーチンによって返される値 必須ヘッダー
atexit <stdlib.h>

このプログラムは、atexit が呼び出された時に実行される関数のスタック上に 4 つの関数をプッシュします。 プログラムの終了時に、後入れ先出し法でこれらのプログラムが実行されます。

// crt_atexit.c
#include <stdlib.h>
#include <stdio.h>

void fn1( void ), fn2( void ), fn3( void ), fn4( void );

int main( void )
{
   atexit( fn1 );
   atexit( fn2 );
   atexit( fn3 );
   atexit( fn4 );
   printf( "This is executed first.\n" );
}

void fn1()
{
   printf( "next.\n" );
}

void fn2()
{
   printf( "executed " );
}

void fn3()
{
   printf( "is " );
}

void fn4()
{
   printf( "This " );
}
This is executed first.
This is executed next.

関連項目

プロセスと環境の制御
abort
exit_Exit_exit
_onexit, _onexit_m