R6025 ---Pure virtual functmm call的错误之一
生活随笔
收集整理的這篇文章主要介紹了
R6025 ---Pure virtual functmm call的错误之一
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??? 今天在調試一個程序,在退出時,突然出現這樣的錯誤:
??? “Runtime Error! ....R6025 ---Pure virtual functmm call ”
??? 捉摸了一會,發生了問題所在。
??? 我這是一個DLL,是在FreeLibrary里出的錯誤,而看調用棧是在一個類的析構函數里發生了些錯誤。
??? 而這個類的析構函數里調用了一個全局對象,這個全局對象又轉換到基類類型再調用純虛函數(子類實現了此純虛函數)
??? 我覺得可能的原因是FreeLibrary了以后全局對象的信息不全了,已找不到和基類的關系,導致出錯。
??? 模型代碼如下(純手工,不一定能運行):
???
interface A {virtual int add(int x,int y) = 0; }class B : public A { public:virtual int add(int x,int y){return x+y;} }//獲得全局對象 A* get_A(void) {static B b_;static pA_* = &b_;return pA_; }//調用類 class mycaller { public: mycaller(){}~mycaller(){get_A()->add(1+2);} //如果FreeLibrary時,這個析構函數才被調用,則會導致R6025的錯誤發生 }
總結
以上是生活随笔為你收集整理的R6025 ---Pure virtual functmm call的错误之一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学计算机随堂笔记,随堂笔记 计算机网络原
- 下一篇: Numerical Optimizati