Buenas,
Tengo un error que me está volviendo loco y no sé que hacer en algo que, aparentemente, es muy sencillo. Se trata de un crash a la hora de liberar memoria con delete. El código que estoy usando para crear la matriz dinámica de caracteres es el siguiente:
char **codigo;
codigo = new char*[(5*lineas)+1];
for (i = 0; i <= 5*lineas; i++) codigo[i] = new codigo[1001];
...
[ codigo del programa ]
...
for (i = 0; i <= 5 * lineas; i++) delete[] codigo[i];
delete[] codigo;
El error siempre se me produce en dos valores concretos, para i=256 o i= 527 y es un error intermitente, es decir, a veces me crashea en i=256, otras en i= 527 y otras veces me libera la memoria sin problemas y se termina de ejecutar el programa completo.
No encuentro ningún patron en las lineas en las que s eproduce el fallo y lo más desquiciante es el hecho de la aleatoriedad de que unas veces falle y otras no, con las mimsas condiciones de partida... :-( :-( :-(
· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex
En un lugar pusiste atvl y en el otro pusiste codigo.
Y luego pusiste new codigo[1001] en vez de new char[1001].
Será
codigo[i] = new char[1001];
Corregido, en todas las lineas está escrito codigo. En cualquier caso el problema creo que no está a la hora de hacer el delete, sino que durante la ejecución del programa se termina escribiendo en una zona de memoria donde no se debe...