Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: aerolio_2 en 25 Marzo 2017, 20:33 pm



Título: Crash al usar operadores new y delete.
Publicado por: aerolio_2 en 25 Marzo 2017, 20:33 pm
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:

Código
  1. char **codigo;
  2.  
  3. codigo = new char*[(5*lineas)+1];
  4. for (i = 0; i <= 5*lineas; i++) codigo[i] = new codigo[1001];
  5.  
  6. ...
  7.  
  8. [ codigo del programa ]
  9.  
  10. ...
  11.  
  12.  
  13. for (i = 0; i <= 5 * lineas; i++) delete[] codigo[i];
  14.  
  15. 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


Título: Re: Crash al usar operadores new y delete.
Publicado por: ivancea96 en 25 Marzo 2017, 21:28 pm
En un lugar pusiste atvl y en el otro pusiste codigo.
Y luego pusiste new codigo[1001] en vez de new char[1001].

Será
Código
  1. codigo[i] = new char[1001];


Título: Re: Crash al usar operadores new y delete.
Publicado por: aerolio_2 en 25 Marzo 2017, 23:01 pm
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...