¿Qué significa “corrección vtable”?
Pregunta
He oído este término, "corrección vtable", que se utiliza. Qué significa eso? No tenía éxito pidiendo Google. Ya sé lo que es un vtable es por lo que no tiene que ser definido.
Solución
La respuesta simple: Es un truco para permitir que el código generado por los compiladores diferentes idiomas / coexistir. Permite que el tiempo de ejecución para encontrar la ubicación de las funciones virtuales sin conocer los detalles de la aplicación.
Otros consejos
Para mí, Google reveló que fixups vtable son una característica especial del formato de archivo ejecutable PE (Windows). Ellos proporcionan una forma eficaz de poner en práctica vtables (para C ++ y otros lenguajes), de acuerdo con de ECMA PE especificación :
Algunos idiomas, que no eligen seguir el tiempo del sistema tipo común modelo, puede tener funciones virtuales que necesitan ser representados en una v-mesa. Estos v-mesas están dispuestas por el compilador, no por el tiempo de ejecución. Encontrar la ranura tabla v correcta y llamando indirectamente a través del valor celebrada en esa ranura también se hace por el compilador. El campo en VtableFixups la cabecera contiene el tiempo de ejecución ubicación y el tamaño de una matriz de Fixups VTABLE (véase la cláusula 14.5.1). V-mesas deberán ser emitidos en una lectura y escritura sección del archivo PE.
Cada entrada en esta matriz describe una array contiguo de ranuras v-mesa de el tamaño especificado. Cada ranura comienza inicializado a cabo a la ficha de metadatos valor para el método que necesitan para llamada. En el tiempo de carga de imágenes, el tiempo de ejecución Cargador a su vez, cada entrada en una puntero a código de máquina para la CPU y puede ser llamado directamente.