在 Visual C++ R6025 Run-Time 錯誤的描述

文章翻譯 文章翻譯
文章編號: 125749 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您,當您正在開發程式時可能會發生的問題。 如果您仍然遇到類似本文所描述的問題,可能是不同的問題。要搜尋的特定問題的相關問題,請併入產品名稱搜尋以縮小結果。如果要類似問題的疑難排解請參閱本文稍後在 [類似的問題和解決方案 >] 一節。

徵狀

C + + 程式失敗,並報告下列執行階段錯誤:
執行階段錯誤 R6025
-純虛擬函式呼叫

發生的原因

當您的應用程式間接呼叫純虛擬成員函式在內容中位置呼叫函式是不正確時,就會發生這個錯誤。在大多數情況下,編譯器會偵測出這點,並建置應用程式時報告錯誤。但是,取決於您的程式碼的寫入方式有時候問題是只在執行時期所偵測到。

當您間接呼叫建構函式呼叫的內容或解構函式的抽象基底類別內的純虛擬函式時,就會發生這個錯誤。範例程式碼下方,連同一些詳細描述] 所示。

解決方案

呼叫純虛擬函式是一個程式設計的錯誤,因此您需要尋找純虛擬函式呼叫和重寫程式碼,所以它不會呼叫。

若要尋找純虛擬函式呼叫的方法之一是純虛擬函式取代會呼叫 Windows API 函式 DebugBreak 的實作。使用 [偵錯工具時 DebugBreak 會導致硬式編碼中斷點。當程式碼會停止執行在此中斷點時,您可以檢視以查看已呼叫此函式呼叫堆疊。

搜尋純虛擬函式呼叫的另一個方法是在 PureVirt.c 中找到 _purecall 函式上設定中斷點。在這個函式上的重大具有保持堆疊不變,以便您可以追蹤發生什麼的優點。

狀況說明

這種行為是經過設計規劃的。

其他相關資訊

如需詳細資訊請參閱下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站中的 [組建錯誤] 區段的"C 執行階段錯誤 R6002 透過 R6025 」 頁面:
http://msdn2.microsoft.com/en-us/library/aa277044(VS.60).aspx
附註R6025 錯誤不會說明手冊或包含使用 Visual C++,版本 2.x 或其下的線上說明。不過,它會簡短討論第 3 篇 Readme.wri 檔案 Visual C++ 2.0 版隨附。

範例程式碼

   /* Compile options needed: none
   */ 

   class A;

   void fcn( A* );

   class A
   {
   public:
       virtual void f() = 0;
       A() { fcn( this ); }
   };

   class B : A
   {
       void f() { }
   };

   void fcn( A* p )
   {
       p->f();
   }

   // The declaration below invokes class B's constructor, which
   // first calls class A's constructor, which calls fcn. Then
   // fcn calls A::f, which is a pure virtual function, and
   // this causes the run-time error. B has not been constructed
   // at this point, so the B::f cannot be called. You would not
   // want it to be called because it could depend on something
   // in B that has not been initialized yet.

   B b;

   void main()
   {
   }
				

類似的問題和解決方案

如果您仍然遇到類似本文所描述問題的問題,可能是不同的問題。如需有關類似的問題和解決方案,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件:
240437金錢執行階段錯誤: 「 R6025-純虛擬函式呼叫"
308260如何疑難排解 Windows 2000、 Windows XP 架構、 Windows Server 2003 為主或 Windows Vista 電腦上在 Internet Explorer 6 和網際網路總管 7 中的指令碼錯誤
267572WD2000: 錯誤訊息: 「 執行階段錯誤 '5' 」 當您啟動 Word 時
170409匯入 Quickbooks 資料 SBFM97: MS Visual C++ 執行階段錯誤
309299當您瀏覽至某些網頁的執行階段錯誤

屬性

文章編號: 125749 - 上次校閱: 2008年3月13日 - 版次: 8.0
這篇文章中的資訊適用於:
  • Microsoft Visual C++ 2008 Express Edition
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 4.2 Professional Edition
  • Microsoft Visual C++ 4.1 Subscription
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 2.1
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 1.52 Professional Edition
  • Microsoft Visual C++ 1.51
  • Microsoft Visual C++ 1.5 Professional Edition
  • Microsoft Visual C++ 1.0 Professional Edition
關鍵字:?
kbmt kbresolve kbtshoot kbcompiler kbcpponly kberrmsg kbprb KB125749 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:125749
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com