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