Visual C++'ta R6025 çalışma zamanı hatası açıklaması

Makale çevirileri Makale çevirileri
Makale numarası: 125749 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, bir program geliştirilirken oluşabilecek bir sorun açıklanır. Bu makalede açıklanan soruna benzer bir sorunu yaşamaya devam ediyorsanız, farklı bir sorun olabilir. Belirli bir sorunu ile ilgili sorunları aramak için lütfen ürün adını arama sonuçlarınızı daraltmak için ekleyin. Benzer sorunları gidermek için bu makalenin "benzer sorunlar ve çözümleri" bölümüne bakın.

Belirtiler

C++ programı başarısız olur ve aşağıdaki çalışma zamanı hata bildirir:
R6025 çalışma zamanı hatası
-saf sanal işlev çağrısı

Neden

Uygulamanızın dolaylı olarak saf sanal üye işlevi bir bağlamda burada işlevi çağrısı geçerli değil çağırdığında, bu hata oluşur. Çoğu durumda, derleyici bunu algılar ve uygulama oluşturulurken hata bildirir. Ancak, kodunuzun nasıl yazılır bağlı olarak bazen sorun yalnızca çalışma zamanında algılanır.

Oluşturucu çağrısı kapsamında ya da bir soyut temel sınıf yıkıcı içinde saf sanal işlevi dolaylı olarak çağırmak hata oluşur. Bu bazı daha fazla açıklamasıyla birlikte örnek kod aşağıda gösterilmiştir.

Çözüm

Böylece saf sanal işlevi çağrısı bulmak ve değil adlı için kodu yeniden gerek saf sanal işlevi çağıran bir programlama hatası var.

Saf sanal işlevi çağrısı bulmanın bir yolu saf sanal işlevi DebugBreakWindows API işlevi çağıran bir uygulama ile değiştirmektir. Hata Ayıklayıcı'yı kullanırken, DebugBreak sabit kodlanmış kesme noktasına neden olur. Kod bu kesme noktasında çalışmayı durdurduğunda, burada işlevi çağrıldı görmek için çağrı yığını görüntüleyebilirsiniz.

Saf sanal işlevi çağrısı bulmak için başka bir PureVirt.c içinde bulunan _purecall işlevi bir kesme noktası ayarlamak için bir yoldur. Bu işlev üzerinde en son ne gerçekleşen izleyebilirsiniz böylece yığını değişmeden kalmasını avantajına sahiptir.

Durum

Bu davranış tasarımdan kaynaklanır.

Daha fazla bilgi

Daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini "Yapı hataları" bölümündeki "C çalışma zamanı hataları R6002 aracılığıyla R6025" sayfasına bakın:
http://msdn2.microsoft.com/en-us/library/aa277044 (VS.60).aspx
Not Visual C++ ile sürümlerinde bulunan çevrimiçi Yardım'a veya el kitapları R6025 hata belgelenmemiş 2.x veya altı. Ancak, bunu kısaca Visual C++ sürüm 2.0 ile birlikte gelen Readme.wri dosyasının bölüm 3'te ele alınmıştır.

Örnek kod

   /* 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()
   {
   }
				

Benzer sorunlar ve çözümleri

Bu makalede açıklanan soruna benzer bir sorunu yaşamaya devam ediyorsanız, farklı bir sorun olabilir. Benzer sorunlar ve çözümleri hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
240437 Para çalışma zamanı hatası: "R6025-Pure sanal işlev çağrısı"
308260 Windows 2000, Windows XP, Windows Server 2003 veya Windows Vista tabanlı bilgisayarlarda komut dosyası hataları Internet Explorer 6 ve Internet Explorer 7'de nasıl giderilir
267572 WD2000: Hata iletisi: "çalışma zamanı hatası '5'" sözcüğü başlattığınızda
170409 SBFM97: Quickbooks verilerini alma MS Visual C++ çalışma zamanı hataları
309299 Bazı Web sayfalarına gözattığınızda çalışma zamanı hatası

Özellikler

Makale numarası: 125749 - Last Review: 3 Mart 2014 Pazartesi - Gözden geçirme: 12.0
Bu makaledeki bilginin uygulandığı durum:
  • 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++ 5.0 Professional Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 1.5 Professional Edition
Anahtar Kelimeler: 
kbresolve kbtshoot kbcompiler kbcpponly kberrmsg kbprb kbmt KB125749 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.
Makalenin İngilizcesi aşağıdaki gibidir: 125749

Geri Bildirim Ver

 

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