1

我对此有点困惑——请帮忙。

假设一个 C++ 程序有一个类和该类的一个对象。我想执行一些与清理相关的任务并为此编写了一个函数。那么我应该更喜欢从析构函数调用该方法还是通过调用atexit()

注意:我知道 C++ 类析构函数和atexit(). 它会影响任何性能吗?或者有什么好处?

4

1 回答 1

2

atexit()注册一个在程序终止时调用的函数(例如,当main()调用 areturn或在exit()某处显式调用时)。

它可以帮助您保证每次程序终止时都会执行某些过程,而不管在何处调用终止。

调用时exit(),静态对象被销毁(调用析构函数),但不是局部变量范围内的对象,当然也不是动态分配的对象(只有在显式调用时才会销毁delete)。

如果您的对象不是静态的,您可能需要注册一个atexit()函数来保证您的清理过程将被执行,否则将自动完成。

也就是说,如果您的程序exit()完全使用。如果您的代码设计为main()始终正常终止,您可以将代码放在那里。

于 2016-02-06T03:11:13.057 回答