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개의 함수를 푸시합니다. 프로그램이 종료되면 LIFO(후입선출) 방식으로 이러한 프로그램이 실행됩니다.
// 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.