我正在开发一个 C++ 应用程序,该应用程序内部有一些定期创建和销毁的控制器对象(使用新的)。这些控制器必须将自己注册到另一个对象(我们称之为controllerSupervisor),并在它们被破坏时取消注册。
我现在面临的问题是在我退出应用程序时发生的:由于破坏顺序不是确定性的,因此单个 controllerSupervisor 实例在(某些)控制器本身之前被破坏,并且当它们调用 unregister 方法时他们的析构函数,他们这样做是在一个已经被破坏的对象上。
到目前为止,我提出的唯一想法(感冒了,所以这可能并不意味着什么)不是将 controllerSupervisor 作为堆栈上的全局变量,而是在堆上(即使用 new)。但是在那种情况下,我没有删除它的地方(这都在第 3 方类型的库中)。
任何关于可能选项的提示/建议将不胜感激。