program_abort — std::abort
program_abort — std::abort
std::abort는 프로그램을 비정상 종료(abnormal termination)시킨다. <cstdlib> 헤더에 있어요.
SIGABRT가 신호 처리기에 잡히지 않는 한, 프로그램을 비정상 종료시켜요.
출처: cppreference
본문
// <cstdlib> 헤더
[[noreturn]] void abort() noexcept; // C++11+
동작
- 프로그램을 비정상적으로 종료해요.
- 정상 종료 함수(
atexit등록된 핸들러)는 호출되지 않아요. - 임시 객체 소멸자·정적 소멸자도 실행되지 않아요.
SIGABRT신호가 발생하고, 처리기가 없으면 구현 정의 방식으로 종료돼요.
사용 예
#include <cstdlib>
void fatal_error() {
std::abort(); // 즉시 비정상 종료
}
특징
- 즉시 종료 — 정리(smettling) 없이 끝냄.
- 심각한 오류·불변식 위반 시 디버깅용으로 쓰여요.
- 반환하지 않는
[[noreturn]].
// 치명적 상태에서
if (critical_invariant_broken) {
std::abort(); // 정리 없이 즉시 종료
}
std::abort는 프로그램을 정리 없이 즉시 비정상 종료시키는 함수예요. 정상 종료는 std::exit, 자원 정리가 필요하면 std::_Exit 등을 써요.