Comprendre l'allocation dynamique
Fermé
ripcurlpro
Messages postés
4
Date d'inscription
jeudi 4 novembre 2004
Statut
Membre
Dernière intervention
19 mars 2005
-
4 nov. 2004 à 09:58
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 - 4 nov. 2004 à 10:28
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 - 4 nov. 2004 à 10:28
A voir également:
- Comprendre l'allocation dynamique
- Tableau croisé dynamique - Guide
- Liste déroulante dynamique excel - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
- Tableau croisé dynamique ne prend pas toutes les données ✓ - Forum Excel
- Liste déroulante dynamique en cascade excel - Guide
2 réponses
blurk
Messages postés
486
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
160
4 nov. 2004 à 10:28
4 nov. 2004 à 10:28
Déjà, la structure ici est une variable globale, ce qui pose problème
pour l'allocation dynamique: elle ne peut se faire que par addresse.
or aucune fonction ici ne traite la structure par adresse.
L'allocation dynamique d'une varable globale (dont la durée de vie est celle du programme) présente peu d'intérêt.
D'ailleurs, on alloue de la mémoire dynamique pour une variable dans la fonction où elle est déclarée. Le plus souvent, on alloue la mémoire pour une variable en début de fonction et on libère la mémoire en sortie de fonction. La variable allouée dynamyquement est transmise par pointeur (ou adresse) aux autres fonctions gràce à l'usage des paramètres et des pointeurs. En fait l'allocation dynamique permet d'éviter les inconvénients provoqués par les variables globales:
lenteur, occupation permanente de la mémoire.
Donc la structure pourrait être déclarée dans main, et passée par pointeur comme paramètre à toutes les fonctions.
Ensuite on peut faire de l'allocation dynamyque
ps: le typedef c'est pas indispensable (j'ai jamais compris ce qu'il avait de plus que #define à partir du moment ou on peut faire struct mastructure)
cordialement.
¤
pour l'allocation dynamique: elle ne peut se faire que par addresse.
or aucune fonction ici ne traite la structure par adresse.
L'allocation dynamique d'une varable globale (dont la durée de vie est celle du programme) présente peu d'intérêt.
D'ailleurs, on alloue de la mémoire dynamique pour une variable dans la fonction où elle est déclarée. Le plus souvent, on alloue la mémoire pour une variable en début de fonction et on libère la mémoire en sortie de fonction. La variable allouée dynamyquement est transmise par pointeur (ou adresse) aux autres fonctions gràce à l'usage des paramètres et des pointeurs. En fait l'allocation dynamique permet d'éviter les inconvénients provoqués par les variables globales:
lenteur, occupation permanente de la mémoire.
Donc la structure pourrait être déclarée dans main, et passée par pointeur comme paramètre à toutes les fonctions.
Ensuite on peut faire de l'allocation dynamyque
main { struct mastructure=(struct *type_de_structure)= malloc(nbfiches * sizeof(*mastructure); ............... fonction1(&mastructure[1]); //une fiche précise ......................... fonction1(mastructure); // le fichier complet free(mastructure) } fonction1(struct * mastructure) { ...................... }
ps: le typedef c'est pas indispensable (j'ai jamais compris ce qu'il avait de plus que #define à partir du moment ou on peut faire struct mastructure)
cordialement.
¤