Comment libérer de la mémoire d’un tableau de caractères en C

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 .