C/Visual C - UN ERROR AL HACER UN "FREE"

 
Vista:

UN ERROR AL HACER UN "FREE"

Publicado por ifer (52 intervenciones) el 06/02/2003 15:52:46
He implementado una matriz 25x25 de la siguiente forma:
pMatrix = (float*) malloc( sizeof(float) * (25*25) );
en donde: float *pMatrix;
para probarlo hice un loop que solo mete el valor 0.1:
for (i=1; i<=25; i++)
for (j=1; j<=25; j++)
pMatrix[ (i * 25) + j ] = 0.1 ;
hasta ahi todo bien, pero luego trato de liberar memoria con:
free(pMatrix);
sale un horible y grande cuadro de error:
Debug Error!
DAMAGE: after Normal block (#56) at 0x00664260
y ahi todo muere, lo mas extraño es que si meto los valores sin el
bucle, es decir uno por uno:
pMatrix[ 1 ] = 0.1 ;
pMatrix[ 2 ] = 0.1 ;
.....
y libero, lo hace bien, pero tambien lo logra con el bucle si reservo
mucha mas memoria con malloc que la que necesito. que sucede dios mio?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:UN ERROR AL HACER UN

Publicado por Endos (58 intervenciones) el 06/02/2003 21:53:30
En C los valores empiezan por 0. Estas escribiendo mas alla de la zona de memoria que reservas. Lo correcto seria:

for (i=0; i<25; i++)
for (j=0; j<25; j++)
pMatrix[ (i * 25) + j ] = 0.1 ;

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar