comment libérer c 2d tableau
j'ai le code suivant:
int **ptr = (int **)malloc(sizeof(int*)*N);
for(int i=0;i<N;i++)
ptr[i]=(int*)malloc(sizeof(int)*N));
comment puis-je gratuit ptr à l'aide de free
? dois-je en boucle sur le ptr et gratuit ptr[i]? ou tout simplement faire
free(ptr)
et le ptr sera libéré?
source d'informationauteur lina
Vous devez vous connecter pour publier un commentaire.
Vous aurez à boucle sur le ptr[i], libérant chaque int* que vous traversez, car vous suggérer. Par exemple:
Tout le contraire de l'allocation:
Oui, vous devez en boucle sur
ptr
et gratuit chaqueptr[i]
. Pour éviter les fuites de mémoire, la règle générale est ceci: pour chaquemalloc()
il doit y avoir exactement un correspondantfree()
.vous n'êtes pas vérifier pour la fonction malloc de la non-affectation. Vous devriez toujours vérifier.