📜  C++ atexit()(1)

📅  最后修改于: 2023-12-03 15:13:53.930000             🧑  作者: Mango

C++ atexit()

atexit()函数用于在程序结束时执行指定的函数。可以使用该函数来释放动态分配的内存、关闭打开的文件等操作。

函数声明
int atexit(void (*func)(void));

该函数接受一个指向函数的指针作为参数,该函数接受无参数并返回void。它返回一个整数,表示注册该函数的状态。如果成功,则返回0,否则返回非0值。

示例代码
#include <cstdlib>
#include <iostream>

void cleanUp() {
  std::cout << "Clean up memory and close files...\n";
}

int main() {
  std::cout << "Start program...\n";
  if (atexit(cleanUp) != 0) {
    std::cerr << "Failed to register clean up function!\n";
    return EXIT_FAILURE;
  }

  std::cout << "Do something here...\n";
  // Your code here...

  std::cout << "End of program...\n";
  return EXIT_SUCCESS;
}

在上面的示例中,我们在函数cleanUp()中添加了清理内存和关闭文件等操作。我们使用atexit()来注册该函数以确保在程序退出时执行。

请注意,无论使用return语句还是调用exit()函数,该函数都会在程序结束时被调用。其他可能导致程序终止的信号(如SIGINT)也会导致该函数被调用。

总结

atexit()函数提供了一种在程序结束时执行清理操作的简单方法。在动态分配内存、打开文件或其他需要在程序退出时进行清理的情况下,它非常有用。但是,它并不是一种完全可靠的方式,因为如果程序崩溃或收到某些信号,该函数可能无法正常执行。