gpt4 book ai didi

c++ - 从析构函数调用函数或将其提供给 atexit() 之间的区别

转载 作者:行者123 更新时间:2023-11-30 03:44:48 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

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

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

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

关于c++ - 从析构函数调用函数或将其提供给 atexit() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35236766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com