dll卸载导致的崩溃

A.dll里有一个全局单件,并定义了类型MyBaseClass,MyBassClass的实例被单件所持有,单件负责维护实例的生命周期。B.dll里定义了类MySubClass : public MyBaseClass。使用过程中MySubClass的实例被添加到A.dll中的单件里。若用卸载了B.dll,再卸载A.dll那么就会造成崩溃。原因是A.dll中的单件在析构的时候需要用到MyBaseClass的析构函数(假设析构函数是虚函数),而B.dll已经从内存中卸载了,因此导致虚函数调用失败从而程序崩溃。
posted @ 2012-10-27 18:40  胖胖熊  阅读(669)  评论(0编辑  收藏  举报