he descubierto el error clásico de new/delete desajuste en nuestra base de código de la siguiente manera:¿Qué tan grave es el error de desajuste del operador nuevo/eliminar?
char *foo = new char[10];
// do something
delete foo; // instead of delete[] foo;
¿Qué tan grave es esto? ¿Causa una pérdida de memoria o error? Cuáles son las consecuencias. Tenemos algunos problemas de memoria, pero esto no parece lo suficientemente grave como para explicar todos los síntomas (daños en el montón, etc)
EDIT: preguntas adicionales para mayor claridad
¿Se acaba de liberar el primer miembro de la matriz? o
¿Hace que el sistema pierda la pista de la matriz? o
¿La memoria dañada es de alguna manera?
Gracias por la respuesta rápida. Entonces realmente indefinido? Como en, nadie puede decir lo que podría pasar? Si eso es así, podría explicar nuestras observaciones. –
@AndrewS. De hecho indefinido. Recuerdo que "funcionó" en Visual Studio, por ejemplo. – cnicutar
Indefinido, es decir, depende del compilador/sistema operativo. –