[C] Listes chaînées + malloc
Fermé
oliver91
Messages postés
51
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2009
-
8 juin 2007 à 21:51
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 - 12 juin 2007 à 08:08
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 - 12 juin 2007 à 08:08
A voir également:
- [C] Listes chaînées + malloc
- Créer des listes déroulantes excel - Guide
- Excel listes déroulantes en cascade - Guide
- Listes simplement chainées en lagage c - Forum C
- Malloc en C - Forum C
- Malloc - Forum Programmation
5 réponses
ekra
Messages postés
1870
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
342
8 juin 2007 à 23:34
8 juin 2007 à 23:34
Bonjour,
On utilise malloc pour une allocation dynamique (après compilation). Concrètement c'est quand tu veux reserver de l'espace mémoire, mais que tu ne sais pas combien à l'étape de la compilation.
Exemple :
variable a : est demandé à l'utilisateur pour savoir combien d'espace il veut réserver
Si tu fait :
int espace[a]; /* Interdit, a doit être une constante non modifiable après la compilation */
--------
int *espace;
espace = (int*)malloc(sizeof(int)*a); /* Ok : la mémoire est allouée en RAM */
/* Traitement */
free(espace); /* Ne pas oublier de libérer la mémoire */
Dans le cas de liste chainée, tu ne sais pas à l'avance combien tu dois en réserver. Ce nombre varie selon les exécutions.
On utilise malloc pour une allocation dynamique (après compilation). Concrètement c'est quand tu veux reserver de l'espace mémoire, mais que tu ne sais pas combien à l'étape de la compilation.
Exemple :
variable a : est demandé à l'utilisateur pour savoir combien d'espace il veut réserver
Si tu fait :
int espace[a]; /* Interdit, a doit être une constante non modifiable après la compilation */
--------
int *espace;
espace = (int*)malloc(sizeof(int)*a); /* Ok : la mémoire est allouée en RAM */
/* Traitement */
free(espace); /* Ne pas oublier de libérer la mémoire */
Dans le cas de liste chainée, tu ne sais pas à l'avance combien tu dois en réserver. Ce nombre varie selon les exécutions.
dubcek
Messages postés
18753
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
7 novembre 2024
5 619
11 juin 2007 à 15:24
11 juin 2007 à 15:24
Bonne explication là: cliste
oliver91
Messages postés
51
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2009
3
11 juin 2007 à 14:52
11 juin 2007 à 14:52
Mais alors comment faire si j'ai une liste chaînée de nom de fichiers (dont je ne sais pas combien j'en ai ...) ??
De plus, l'utilisateur doit pouvoir supprimer (n'importe lequel des noms de fichier) ou rajouter (à la fin) ...
... comment faire pour cela ?
Merci d'avance de votre aide.
Olive.
De plus, l'utilisateur doit pouvoir supprimer (n'importe lequel des noms de fichier) ou rajouter (à la fin) ...
... comment faire pour cela ?
Merci d'avance de votre aide.
Olive.
oliver91
Messages postés
51
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2009
3
11 juin 2007 à 23:06
11 juin 2007 à 23:06
Désolé mais je n'ai pas trouvé que ce tuto reponde vraiment bien à ma demande ...
En tout cas, les noms de fichiers sont à resaissir à chaque lancement du prog ... n'ai t il pas possible de les garder en mémoire ?
En tout cas, les noms de fichiers sont à resaissir à chaque lancement du prog ... n'ai t il pas possible de les garder en mémoire ?
ekra
Messages postés
1870
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
342
12 juin 2007 à 08:08
12 juin 2007 à 08:08
Pour cela il faut écrire dans un fichier. C'est la seule méthode de stockage lorsqu'on arrête l'execution d'un programme.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
reddevil
Messages postés
61
Date d'inscription
vendredi 8 décembre 2006
Statut
Membre
Dernière intervention
30 août 2008
5
8 juin 2007 à 21:58
8 juin 2007 à 21:58
malloc sert à allouer de l'espace memoire car en ce qui concerne les listes chainés celles ci sont des noeuds alloués dynamiquent dans la memoire qui facilitent la recherche mieux que les tableaux
en plus leur avantages c kil sont pa gourmands rn memoire juste aprés l'utilisation en utilise un simple free pour liberer l'espace occupé
en plus leur avantages c kil sont pa gourmands rn memoire juste aprés l'utilisation en utilise un simple free pour liberer l'espace occupé