c++ - rescindir - Esta aplicación ha solicitado que Runtime lo rescinda de forma inusual.
rescindir contrato laboral (1)
Este diálogo es producido por Visual Studio Runtime, en respuesta a abort()
. abort()
es llamado por defecto por ejemplo terminate()
. Obtendrá esto de, por ejemplo, excepciones de C ++ no controladas, llamadas a virtuales puros, afirmaciones fallidas.
Por lo tanto, no depende de la plataforma, sino que depende de la biblioteca en tiempo de ejecución. abort()
es, según el estándar c ++, necesario para finalizar el programa sin ejecutar destructores para objetos de almacenamiento estáticos y automáticos, y sin llamar a los atexit()
.
A lo largo de los años, he visto que las aplicaciones C ++ emplean el lenguaje de la "forma inusual" en un crash. Por ejemplo:
Esta aplicación ha solicitado que Runtime lo rescinda de forma inusual. Por favor, póngase en contacto con el equipo de soporte de la aplicación para obtener más información.
El primero de estos lo depuré, tenía algo que ver con un destructor que fue despedido por una clase, en una cadena de herencia, que ya había sido eliminada. No recuerdo los detalles mejor que eso. Cuando googleo este tema, encuentro una o dos otras causas sugeridas. Por ejemplo, que los binarios se han corrompido y deben volver a escribirse.
En general, encuentro que la información sobre este tipo de bloqueo es demasiado delgada. Me gustaría ver dos cosas:
- Una explicación formal de por qué existe este tipo de terminación (y qué plataformas de Windows, si corresponde).
- Una lista de todos los motivos, o al menos los motivos comunes, por los que se produce este tipo de bloqueo.
¿Alguien sabe dónde se puede encontrar esta información? ¿Alguien puede proporcionar esta información?