libération mémoire - C - Programmation
Marsh Posté le 05-12-2015 à 14:32:52
Pour faire ça proprement, c'est OK a condition que tu libères ça proprement quand tu n'en a plus besoin (dans une boucle, free(tab[index]) puis free(tab)).
Mais ça nécessite que tu connaisse la valeur de index en dehors de function (ou bien que tu alloues index+1 éléments et que tu mettes le dernier à NULL, comme indicateur de fin, et que aucun des autres array[index] ne soit à NULL)
Mais j'ai donné une solution plus simple récemment si les lignes de ton tableau sont de taille fixe (pas clair au vu de ton exemple si ton strlen(string) est constant ou variable) et que tu ne fais pas de réallocation:
Citation : Une fonction, et avec une seule allocation:
La fonction fait une allocation unique (on colle les pointeurs en premier et les données derrière), et le gros avantage, c'est qu'un unique free suffit à libérer la mémoire. |
C'est peut être adaptable à ton cas de manière simple. (si les lignes de ton tableau ne sont pas de taille fixe, c'est faisable mais nettement moins simple).
A+,
Marsh Posté le 05-12-2015 à 03:38:34
Dans un tel cas où je dois allouer de la mémoire dans une fonction qui doit retourner un tableau, je ne cerne pas trop comment libérer cette mémoire ainsi allouée
Comment doit-on procéder pour faire les choses proprement ? déclarer le tableau qui passera en paramêtre de la fonction, afin de libérer la mémoire à la fin du main ?
Merci