Когда твоя программа завершается, нужно освободить ресурсы, закрыть логи, сохранить состояние.
std::atexit позволяет зарегистрировать функции, которые вызовутся автоматически при нормальном завершении программы.#include <cstdlib>
#include <iostream>
void cleanup() {
std::cout << "Cleaning up resources...\n";
}
int main() {
std::atexit(cleanup);
std::cout << "Program running...\n";
return 0; // cleanup() вызовется автоматически
}
Ключевой момент: функции вызываются в порядке, обратном регистрации (LIFO).
❗️ Важно:
std::atexit работает только при нормальном завершении (return из main или std::exit). При std::abort или неперехваченных исключениях функции не вызовутся.❗️Best practice: используй RAII и деструкторы вместо atexit, когда это возможно. atexit — для глобального состояния и C-совместимости.
✏️ Используешь ли ты atexit в своих проектах?
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом