¡Hola! >_<
Tengo una duda que me quita el sueño
Si uso esta forma de reserva de memoria:
Código C:
Ver originalint linhas = 10;
int colunas = 10;
int **matrix
= ( int** ) malloc ( sizeof (int) * linhas
* colunas
);
¿Seria correcto liberarlo de esta forma?:
tengo entendido que malloc ( sizeof (int) * linhas * colunas ) reserva la memoria sin fragmentar. ¿O sea que reservando así, todas las casillas quedan adyacentes, cierto? Luego acontece el cast a 2d o algo así.
El caso es que usando malloc para reservar primero el vector de punteros, y luego un loop para reservar cada uno de los vectores que será apuntado por el vector de punteros reservado previamente, puede pasar que cada vector quede desperdigado donde le parezca a malloc. ¿No es eso? Para que hagan una idea de lo que digo si reservo así:
Código C:
Ver originalint **m
= (int**)malloc(sizeof(int)*10); for(int i = 0; i < 10; i++)
m
[i
]=(int*)malloc(sizeof(int)*20);
¿En ese caso si que debo usar un loop para liberar correcto? ¿Pero en el caso de usar malloc como dije antes, se puede prescindir de usar el loop para ir liberando cada uno de los vetores apuntados por el vector de punteros y usar free como si de un array se tratara?. No estoy del todo seguro. ¿Alguien me lo confirma o me lo niega?
Esa es mi duda mayor vamos.
¡Gracias y buen finde!