首页  >  文章  >  后端开发  >  全局变量和静态变量是否会调用 C 析构函数?

全局变量和静态变量是否会调用 C 析构函数?

DDD
DDD原创
2024-11-06 13:22:02394浏览

Do C   Destructors Get Called for Global and Static Variables?

C 是否为全局和类静态变量调用析构函数?

与某些假设相反,C 确实为全局和类调用析构函数-静态变量。它们的销毁发生在两个特定的时刻:

  1. 从 Main 返回时: 当 main() 函数结束时,所有全局变量和类静态变量都被销毁。这符合 C 03 标准的第 3.6.3 节,该标准要求“作为从 main 返回的结果”进行此销毁。
  2. 调用 Exit 时: 如果 exit() 函数是在您的程序中使用时,它会“由于调用 exit”而触发全局变量和类静态变量的销毁,如第 3.6.3 节中所述。

值得注意的是,销毁的顺序这些变量反映了它们的构造函数或动态初始化的相反顺序。此外,根据第 9.4.2 7 节,静态数据成员的初始化和销毁​​与非本地对象相同。

但是,需要注意的是,可能不会调用没有可观察行为的析构函数。 Terry Mahaffey 对“是否保证在块结束之前不会调用 C 析构函数?”的回应进一步探讨了这一点

以上是全局变量和静态变量是否会调用 C 析构函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn