Descripción del error de tiempo de ejecución R6025 en Visual C++

Seleccione idioma Seleccione idioma
Id. de artículo: 125749 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Este artículo describe un problema que puede producirse cuando se desarrolla un programa. Si sigue experimentando un problema parecido al descrito en este artículo, puede ser un problema diferente. Para buscar problemas relacionados con un problema específico, incluir el nombre del producto en la búsqueda para acotar los resultados. Para solucionar problemas similares, vea la sección "problemas similares y soluciones", más adelante en este artículo.

Síntomas

El programa de C++ se produce un error e informa del siguiente error en tiempo de ejecución:
error en tiempo de ejecución R6025
-llamada a función virtual pura

Causa

Este error se produce cuando la aplicación llama indirectamente una función miembro virtual pura en un contexto donde una llamada a la función no es válida. En la mayoría de los casos, el compilador lo detecta y notifica el error al generar la aplicación. Pero dependiendo de cómo se escribe el código, a veces el problema se detecta sólo en tiempo de ejecución.

El error se produce cuando se llama a una función virtual pura en el contexto de una llamada al constructor o destructor de una clase base abstracta indirectamente. Esto se ilustra en el código de ejemplo siguiente, junto con una descripción más.

Solución

Una llamada a una función virtual pura es un error de programación, por lo que necesita buscar la llamada a la función virtual pura y vuelva a escribir el código por lo que no se le llama.

Una forma de encontrar una llamada a una función virtual pura es reemplazar la función virtual pura con una implementación que llama a la función DebugBreakde la API de Windows. Al utilizar al depurador, DebugBreak hará que un punto de interrupción codificado de forma rígida. Cuando el código se detiene en este punto de interrupción, puede ver la pila de llamadas para ver dónde se llamó a la función.

Otra forma de encontrar una llamada a una función virtual pura es establecer un punto de interrupción en la función _purecall que se encuentra en PureVirt.c. Última hora sobre esta función tiene la ventaja de que se mantiene intacta la pila, de modo que puede rastrear lo que está ocurriendo.

Estado

Este comportamiento es por diseño.

Más información

Para obtener más información, consulte la página "C Run-Time errores R6002 a R6025" de la sección "Errores de generación" en el siguiente sitio Web de Microsoft Developer Network (MSDN):
http://msdn2.Microsoft.com/en-us/library/aa277044 (VS.60).aspx
Nota El error R6025 no está documentado en los manuales o la Ayuda en línea, incluido con Visual C++, versiones 2.x o por debajo. Sin embargo, se trata brevemente en la parte 3 del archivo Leame.wri incluido con Visual C++ versión 2.0.

Código de ejemplo

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

Problemas similares y soluciones

Si sigue experimentando un problema parecido el problema que describe este artículo, puede ser un problema diferente. Para obtener más información acerca de problemas similares y soluciones, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
240437 Error en tiempo de ejecución de dinero: "R6025-llamada de función virtual pura"
308260 Cómo solucionar errores de secuencia de comandos en Internet Explorer 6 y en Internet Explorer 7 en equipos con Windows 2000, basado en Windows XP, basado en Windows Server 2003 o con Windows Vista
267572 WD2000: Mensaje de Error: "Error en tiempo de ejecución '5'" al iniciar Word
170409 SBFM97: Errores de tiempo de ejecución de MS Visual C++ importar datos de Quickbooks
309299 Error de tiempo de ejecución cuando explora algunas páginas Web

Propiedades

Id. de artículo: 125749 - Última revisión: lunes, 3 de marzo de 2014 - Versión: 11.0
La información de este artículo se refiere a:
  • Microsoft Visual C++ 2008 Express Edition
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard
  • Microsoft Visual C++ .NET 2002 Standard
  • Microsoft Visual C++ 5.0 Professional
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 1.5 Professional Edition
Palabras clave: 
kbresolve kbtshoot kbcompiler kbcpponly kberrmsg kbprb kbmt KB125749 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 125749

Enviar comentarios

 

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