« Introduction au langage C/Allocation dynamique de mémoire » : différence entre les versions

Contenu supprimé Contenu ajouté
Thierry46 (discussion | contributions)
→‎Libération de la mémoire : Précision fuite mémoire.
Thierry46 (discussion | contributions)
Ligne 71 :
<source lang="C">int tab[var];</source>
 
Ceci était interdit en C89, il fallait faire une allocation dynamique comme vu précédemment. Mais C99 a introduit les [[b:Programmation C/Tableaux#|tableaux de taille variables]] (VLA : Variable Length Array) qui résolvent une partie des problèmes. Cependant leur passage en paramètre à une fonction oblige de transmettre aussi les tailles de leurs dimensions, certaines fonctions écrites avant C99 comme qsort de stdlib.h ne supporte pas ce mécanisme et nécessitent pour être utilisées des tableaux allouées dynamiquement de la façon suivante :
Et bien, non. Ceci est en effet interdit en C, il faut faire une allocation dynamique comme vu précédemment.
De façon plus générale pour faire un tableau de taille variable, il faut faire comme suit :
 
<source lang="C">int *tab= malloc(var * sizeof(int));</source>