J’ai créé un tableau de caractères comme suit:
char arr[3] = "bo";
Comment libérer la mémoire associée au tableau que j’ai nommé “arr”?
Les variables locales sont automatiquement libérées à la fin de la fonction, vous n’avez pas besoin de les libérer vous-même. Vous ne libérez que de la mémoire allouée dynamicment (par exemple, avec malloc
) telle qu’elle est allouée sur le tas:
char *arr = malloc(3 * sizeof(char)); strcpy(arr, "bo"); // ... free(arr);
Plus d’informations sur l’allocation de mémoire dynamic: http://en.wikipedia.org/wiki/C_dynamic_memory_allocation
Vous ne libérez rien du tout. Puisque vous n’avez jamais acquis de ressources de manière dynamic, vous n’avez rien à faire, ni même aucune possibilité de le faire gratuitement.
(C’est la même chose que lorsque vous dites int n = 10;
il n’y a aucune ressource dynamic impliquée que vous devez gérer manuellement.)
La mémoire associée à arr
est libérée automatiquement lorsque arr
sort de la scope. Il s’agit d’une variable locale ou d’une allocation statique, mais elle n’est pas allouée de manière dynamic.
Une règle simple à suivre est que vous ne devez calloc
que tous les appels free()
sur un pointeur renvoyé par un appel à malloc
, calloc
ou realloc
.