Pregunta

Mientras se depura una de volcado de memoria del programa que se encontró con el escenario donde su objeto contenido que es polimórfica pierde su VPTR y puedo ver su apunta a NULL.

¿Cuál podría ser el escenario cuando un objeto pierde su VPTR.

Gracias de antemano, Brijesh

¿Fue útil?

Solución

  1. La memoria ha sido colocado en la papelera, es decir, algo sobreescribí la memoria.

  2. Destruiste llamando borrado o invocando el destructor directamente. Esto por lo general no NULL cabo VPTR, se acaba de terminar teniendo que apunte a la viable de la clase base, pero eso depende de su aplicación.

Lo más probable es el caso 1. Si usted tiene un depurador que tiene puntos de interrupción de memoria y si se puede reproducir el problema de forma fiable, establece un punto de interrupción en la memoria VPTR y ver lo que está modificándolo.

Otros consejos

Probablemente algo sobreescribí todo el objeto. Algo como esto:

memset( object, 0, sizeof( *object ) );

lo cual está bien hasta que se utiliza en un objeto con VPTR.

Puede ser que usted está tratando de utilizar la tabla v durante el destructor de su objeto. La tabla v no está disponible en este momento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top