program_atexit — std::atexit
program_atexit — std::atexit
std::atexit는 프로그램 정상 종료 시 호출될 함수를 등록해요. <cstdlib> 헤더에 있어요.
등록된 함수들은 정상 종료 시 역순으로 호출돼요 (마지막에 등록된 것이 먼저).
출처: cppreference
본문
// <cstdlib> 헤더
int atexit( /*c-atexit-handler*/ * func ) noexcept;
int atexit( /*atexit-handler*/ * func ) noexcept;
사용 예
#include <cstdlib>
#include <iostream>
void cleanup() { std::cout << "cleanup\n"; }
int main() {
std::atexit(cleanup);
// ... 프로그램 실행
return 0; // 정상 종료 시 cleanup 호출
}
특징
- 등록된 함수는 정상 종료(
main반환,std::exit) 시 실행돼요. - 역순으로 실행돼요 (마지막 등록이 먼저).
- 스레드 안전 — 여러 스레드에서 등록 가능.
- 성공 시 0, 실패 시 0이 아닌 값 반환.
std::atexit(f1);
std::atexit(f2);
// 종료 시 f2 먼저, 그 다음 f1 실행
std::atexit은 프로그램 정상 종료 시 자원 정리 함수를 예약하는 데 사용해요. abort로 종료되면 호출되지 않아요.