最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

function
<cstdlib>

# std::atexit

    namespace std {
      extern "C" int atexit(void (*f)(void));          // (1) C++03
      extern "C" int atexit(void (*f)(void)) noexcept; // (1) C++11

      extern "C++" int atexit(void (*f)(void));          // (2) C++03
      extern "C++" int atexit(void (*f)(void)) noexcept; // (2) C++11
    }

## 概要

プログラムが通常の方法で終了するときに呼ばれる関数を登録する。

## 効果

この関数に指定した関数は、以下の条件のときに呼び出される：

- `main()`関数が返る。
- `std::exit()`関数が呼び出される。

指定された関数は、プログラムの終了処理において、`static`変数の破棄が行われる前に呼び出される。

指定された関数の中で例外が送出された場合、`std::terminate()`関数が呼び出され、プログラムが異常終了する。

## 戻り値

関数の登録に成功した場合は`0`が返り、失敗した場合は非`0`が返る。

## 備考

この関数では、複数の関数を登録できる。

登録できる上限数は実装定義だが、32個以上は登録できることが実装に要求される。

## 例

    #include <iostream>
    #include <cstdlib>

    void on_exit()
    {
      std::cout << "on exit" << std::endl;
    }

    int main()
    {
      std::atexit(on_exit);
    }

### 出力

    on exit

## 関連項目

名前 | 説明
--- | ---
`exit` | プログラムを終了させる