【发布时间】:2012-09-11 20:12:45
【问题描述】:
我不是静态的粉丝,但我有一些代码:
除非周围有其他东西,否则静态破坏将失败。静态被声明为 DLL 类内部的成员。
可执行文件正在关闭,因此运行时调用 FreeLibary 以释放它在启动时加载的 DLL。
我知道在我的程序终止期间静态将被销毁(不保证销毁顺序,因为无法保证构造顺序)但是什么时候可以准备好销毁?在我的DLLMain(用于加载的 DLL)退出之后或运行时__DllMainCRTStartup 之后,甚至在此之后?
我只是想知道我是否有机会在销毁之前做某事,如果没有,我需要考虑将静态移除到更合适的位置。
【问题讨论】:
-
撇号攻击,大家躲起来!
-
一个考虑因素是在销毁之前您想要做什么以及与其他各种销毁和终止活动一起执行的时间。如果您要执行的操作将取决于系统的其他部分,那么这些部分可能存在也可能不存在。因此,尝试根据破坏来确定某些行动的时间可能不是最合适的方法。
-
在销毁这个静态成员对象之前需要做什么?
-
@KerrekSB 是的,这很可怕。随机删除了一些。
-
静态对象包含一个 ComPtr。这需要周围的 COM 库才能成功删除。