我对此有点困惑——请帮忙。
假设一个 C++ 程序有一个类和该类的一个对象。我想执行一些与清理相关的任务并为此编写了一个函数。那么我应该更喜欢从析构函数调用该方法还是通过调用atexit()
?
注意:我知道 C++ 类析构函数和atexit()
. 它会影响任何性能吗?或者有什么好处?
我对此有点困惑——请帮忙。
假设一个 C++ 程序有一个类和该类的一个对象。我想执行一些与清理相关的任务并为此编写了一个函数。那么我应该更喜欢从析构函数调用该方法还是通过调用atexit()
?
注意:我知道 C++ 类析构函数和atexit()
. 它会影响任何性能吗?或者有什么好处?
atexit()
注册一个在程序终止时调用的函数(例如,当main()
调用 areturn
或在exit()
某处显式调用时)。
它可以帮助您保证每次程序终止时都会执行某些过程,而不管在何处调用终止。
调用时exit()
,静态对象被销毁(调用析构函数),但不是局部变量范围内的对象,当然也不是动态分配的对象(只有在显式调用时才会销毁delete
)。
如果您的对象不是静态的,您可能需要注册一个atexit()
函数来保证您的清理过程将被执行,否则将自动完成。
也就是说,如果您的程序exit()
完全使用。如果您的代码设计为main()
始终正常终止,您可以将代码放在那里。