📅  最后修改于: 2023-12-03 15:13:53.930000             🧑  作者: Mango
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()
函数提供了一种在程序结束时执行清理操作的简单方法。在动态分配内存、打开文件或其他需要在程序退出时进行清理的情况下,它非常有用。但是,它并不是一种完全可靠的方式,因为如果程序崩溃或收到某些信号,该函数可能无法正常执行。