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

Ö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
Ö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 lütfen 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ı hatasını bildirir:
R6025 çalışma zamanı hatası
- saf sanal işlev çağrısı
Neden
Uygulamanız dolaylı olarak saf sanal üye işlevi bir bağlamda burada işlev çağrısı geçersiz ç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.

Saf sanal işlevi içinde bir kurucu çağrısı kapsamında ya da bir soyut temel sınıf yıkıcı 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
Saf bir sanal işlev çağırmak bir programlama hatası olduğundan, saf sanal işlevin çağrılmaması için işleve yapılan çağrıyı bulup kodu yeniden yazmanız gerekir.

Saf sanal işleve yönelik bir çağrıyı bulmanın bir yolu, saf sanal işlevi DebugBreakWindows API işlevini çağıran bir uygulama ile değiştirmektir. Hata Ayıklayıcı'yı kullanırken, DebugBreak kodlanmış kesme noktası 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 bir sanal işleme yapılan bir çağrıyı bulmanın başka bir yolu, PureVirt.c'de bulunan _purecall işlevi için bir kesme noktası ayarlamaktır. 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ış normaldir.
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:Not: Visual C++ ile sürümleri bulunan çevrimiçi Yardım'a veya el kitapları R6025 hata belgelenmemiş 2.x veya altı. Ancak, bunu kısaca Readme.wri dosyasının Visual C++ sürüm 2.0 ile birlikte gelen Kısı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'" Word 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ı
8.00 8.00c 9,00

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 125749 - Son İnceleme: 04/10/2016 00:22:00 - Düzeltme: 14.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++ 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

  • kbresolve kbtshoot kbcompiler kbcpponly kberrmsg kbprb kbmt KB125749 KbMttr
Geri bildirim