Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1914 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Listes chaînées SANS utiliser Malloc

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Listes chaînées SANS utiliser Malloc

n°1036533
mogway95
Posté le 05-04-2005 à 22:43:14  profilanswer
 

Bonsoir tout l'monde !  
 
Voilà, j'ai un exercice a faire et j'avaoue ne pas savoir par quel bout le prendre ....  
Je m'explique, je dois coder en C une gestion de liste chaînée mais SANS utiliser la fonction Malloc, bizarre me direz vous ... c'est ce que j'ai dis aussi, on m'a rétorquer, "cest facil" !
Mais pas plus de réponses....bref, je cherche depuis quelques jours sans grand succés(je ne dois pas savoir faire de recherche sur le net..).
Pourriez vous m'indiquer deux trois astuces ou une adresse de site qui traite du sujet plizzz ?
Merci beaucoup.

mood
Publicité
Posté le 05-04-2005 à 22:43:14  profilanswer
 

n°1036536
IrmatDen
Posté le 05-04-2005 à 22:45:51  profilanswer
 

salut,
il n'y a peut etre QUE la liste chainee qui doit être faite sans malloc ?
Edit: dans le sens où tu laisses l'utilisateur gérer la mémoire tout seul comme un grand....


Message édité par IrmatDen le 05-04-2005 à 22:46:53
n°1036539
mogway95
Posté le 05-04-2005 à 22:47:50  profilanswer
 

Oui, exactement, je dois faire la liste sans malloc, et les autres fonctions allouer désallouer etc... mais ça je pense pouvoir m'en sortir si j'arrive déjà a gérer cette liste noon ?  

n°1036551
IrmatDen
Posté le 05-04-2005 à 22:55:37  profilanswer
 

Où est le problème alors ??

n°1036553
mogway95
Posté le 05-04-2005 à 22:57:43  profilanswer
 

LOL
Le problème c'est que je vois pas du tout comment je dois faire pour gérer une listes chainées SANS malloc, je sais que je dois passer par une série de pointeur, avec un "réservoir" qui contiendra toujours l'adresse du dernier élément, mais je ne vois pas plus, je vois pas par ou commencer , comment l'appliquer etc....  
Tu vois le délire non ?

n°1036562
IrmatDen
Posté le 05-04-2005 à 23:07:54  profilanswer
 

mogway95 a écrit :

je ne dois pas savoir faire de recherche sur le net..


C'est le moment d'apprendre :D
Et dans la charte c'est bien spécifié : pas de résolution d'exercice....

n°1036571
mogway95
Posté le 05-04-2005 à 23:13:35  profilanswer
 

Mouais... c'est pas trés sympa ça !  
C'est un exercice, pas un examen ! Et c'est bien pour ça que j'ai deman,der si vous aviez des liens de sites ou des astuces pour que JE puisse chercher et surtout COMPRENDRE ...

n°1036577
IrmatDen
Posté le 05-04-2005 à 23:17:04  profilanswer
 

oki t'as du bol que les modos soient pas encore passé par là:)
google -> "liste chainee" et ça roule

n°1036579
mogway95
Posté le 05-04-2005 à 23:20:17  profilanswer
 

merci ! Mais je t'assur que si tu fais ça dans google, tu vas tomber sur tout un tas de page ou ils utilisent MALLOC, et ça , ça ne m'intérrèsse pas...
C'est sans Malloc que je cherche, c'est bien le problème !  

n°1036588
IrmatDen
Posté le 05-04-2005 à 23:28:15  profilanswer
 

Au hasard on va prendre cette page : http://www.commentcamarche.net/c/cliste.php3
Alors bien sur ils y parlent de malloc. Mais cela ne concerne pas la gestion de la liste, uniquement son utilisation. Une liste chainée n'est ni plus ni moins qu'une chaîne de pointeurs (d'où son nom d'ailleurs [:petrus75])...

mood
Publicité
Posté le 05-04-2005 à 23:28:15  profilanswer
 

n°1036592
mogway95
Posté le 05-04-2005 à 23:30:36  profilanswer
 

ok, tu joues sur les mots là... ça j'ai bien compris la suite de pointeurs. mais la fonction Malloc sert a te déplacer etc ? Et ce que je cherche c 'est sans cette fonction, mais si tu sais pas ou ne veut pas laisse couler ...

n°1036596
IrmatDen
Posté le 05-04-2005 à 23:33:32  profilanswer
 

Dis moi plutôt ce que tu ne comprends pas ou te chiffone dans la page que je t'ai filée

n°1036600
mogway95
Posté le 05-04-2005 à 23:38:15  profilanswer
 

bah en fait, le fait d'utiliser une structure va forcément appeler une utilisation de malloc dérrière... ça négatif, par contre, j'ai trouver ça mais je ne sais pas si c'est correct avec ce que je veux faire, cad créer liste, allouer,désallouer...
 
http://www.enseignement.polytechni [...] node3.html
 
Dsl pour le lien si il fonctionne pas....

n°1036616
IrmatDen
Posté le 05-04-2005 à 23:48:53  profilanswer
 

:heink: Si je te suis bien, tu veux faire une liste chainée (et je suppose très fortement le programme de test qui va avec) sans toucher à la mémoire dynamique alors que c'est un outil prévu justement pour aider cette gestion ??
Reprenons, la gestion de la liste se fait sans malloc(et autres) ni free. Il s'agit uniquement de son utilisation, a moins de vouloir faire une liste chainée d'éléments déclarés sur la pile du programme ce qui ne servirait strictement à rien...
Je pense que tu as pris l'expression "sans malloc" un peu trop au pied de la lettre pour l'ensemble de ton exercice....

n°1036622
mogway95
Posté le 05-04-2005 à 23:52:53  profilanswer
 

hum... je t'assure que non, le prof ne veut pas que l'on utilise malloc, il veut que l'on crée cette liste et qu'on l'a gère (ajout, suppression, etc...) en passant par des "réservoirs"... je t'avoue que pour moi c'est trés trés floue... Et je ne vois pas comment gérer tout ça.
Mais sérieusement, si je te saoule avec mon problème dis le , je comprendrais tinquiète ^^

n°1036623
IrmatDen
Posté le 05-04-2005 à 23:54:23  profilanswer
 

bah ecoute je comprends pas ce qu'il veut ton prof  :??:  
désolé

n°1036630
mogway95
Posté le 05-04-2005 à 23:58:06  profilanswer
 

LOL  
c'est bien ce que je lui ai dis, "je comprends pas " !  
Juste pour te donner une idée de l'exercice :  
Le titre c'est :
Allocateur dynamique de zones de tailles fixe(listes chainées) : langage C, sans utiliser les fonctionnalités d'allocation dynamique (malloc).
Ensuite on dois gérer : créer liste, supprimer, allouer, désallouer...
Vala, vala, et je t'avoue que je suis complétement à l'ouest !  ^^

n°1036648
SquiZZ
Posté le 06-04-2005 à 00:08:20  profilanswer
 

je dirais qu'il faut te faire un pool de structures, cad un tableau de structures non initialisées et aller piocher dans ce tableau au lieu de faire des mallocs.

n°1036651
pinguin007
a npe error
Posté le 06-04-2005 à 00:10:16  profilanswer
 

par hazard il voudrait pas que vous simuliez la mémoire dans un gros tableau avec plein de structure dedans et une gestion des cases alloué / vides / toussa ?


---------------
LoD 4 ever && PWC spirit|Le topak de l'iMP-450|inDATOUNEwe trust
n°1036652
mogway95
Posté le 06-04-2005 à 00:10:46  profilanswer
 

oki ! une info à explorer ! Merci beaucoup ! Tableau de structures, c'est noter et je m'y mets dés demain car là,je t'avoue que je suis rinçé et vais me coucher ! En tout cas je te remercie pour ta patience et ton aide !  ^^
A plus tard peut être !?

n°1036654
IrmatDen
Posté le 06-04-2005 à 00:11:10  profilanswer
 

Mais est-ce que c'est rééllement utile/utilisé cette méthode de liste chainée ??
Edit : mogway : désolé j'avais vraiment pas compris  :sweat:


Message édité par IrmatDen le 06-04-2005 à 00:12:05
n°1036655
mogway95
Posté le 06-04-2005 à 00:12:40  profilanswer
 

ah, alors là ? l'utilité n'est pas son but je pense ! dans la classe, on a tous poser cette question, pkoi ne pas utiliser les outils que le langage mets a notre dispo.  
Réponse du saint père le prof : POUR QUE VOUS COMPRENIEZ !  
c'est facil ....

n°1036657
Taz
bisounours-codeur
Posté le 06-04-2005 à 00:13:38  profilanswer
 

mogway95 a écrit :

oki ! une info à explorer ! Merci beaucoup ! Tableau de structures, c'est noter et je m'y mets dés demain car là,je t'avoue que je suis rinçé et vais me coucher ! En tout cas je te remercie pour ta patience et ton aide !  ^^
A plus tard peut être !?


et le tableau tu l'alloues comment
 
 
#define N 100000
 
 
Chainon tab[N] ?

n°1036660
IrmatDen
Posté le 06-04-2005 à 00:15:03  profilanswer
 

apparemment ça serait ça  :??:

n°1036661
mogway95
Posté le 06-04-2005 à 00:15:39  profilanswer
 

comme ça là je ne sais pas...  
J'approfondirais le sujet demain là, car je tiens plus... en tout cas merci  et surtout passez une bonne nuit !

n°1036663
IrmatDen
Posté le 06-04-2005 à 00:17:22  profilanswer
 

toi aussi, t'en auras besoin apparemment ;)

n°1036664
SquiZZ
Posté le 06-04-2005 à 00:19:14  profilanswer
 

IrmatDen a écrit :

Mais est-ce que c'est rééllement utile/utilisé cette méthode de liste chainée ??


 
Ca permet de faire une grosse allocation au début, dans une appli multitaches si toutes les taches utilisent des pools et que tes pools sont bien dimensionnés, ca permet de detecter un problème de mémoire dès le début de l'execution et pas 5 ans après quand deux taches auront envie de faire des gros malloc simultanément.
 
Ca permet aussi de gérer une saturation des pools avant de sortir une grosse erreur sur echec d'allocation.
 
 

n°1036667
IrmatDen
Posté le 06-04-2005 à 00:23:55  profilanswer
 

:whistle: ah oui j'étais loin de penser à tout ça !! merci de l'info

n°1036675
pinguin007
a npe error
Posté le 06-04-2005 à 00:47:06  profilanswer
 

Taz a écrit :

et le tableau tu l'alloues comment
 
 
#define N 100000
 
 
Chainon tab[N] ?


 
bah tu sais c'est un exo, c'est des profs toussa [:spamafote]


---------------
LoD 4 ever && PWC spirit|Le topak de l'iMP-450|inDATOUNEwe trust
n°1036689
Taz
bisounours-codeur
Posté le 06-04-2005 à 01:14:58  profilanswer
 

pinguin007 a écrit :

bah tu sais c'est un exo, c'est des profs toussa [:spamafote]


à part la connerie, je ne vois pas ce qui peux justifier ce genre de trucs. Ah si, l'envie d'une stack overflow  au lancement du programme.

n°1036703
LeGreg
Posté le 06-04-2005 à 04:38:25  profilanswer
 

Taz a écrit :

à part la connerie, je ne vois pas ce qui peux justifier ce genre de trucs.


 
Ben par exemple si tu as besoin d'écrire un allocateur. Et que ton algo d'allocation/désallocation utilise une liste chainée.
La question c'est comment gérer ça sans que l'allocateur ait à s'appeler lui-même.

n°1036728
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-04-2005 à 08:39:29  profilanswer
 

mogway95 a écrit :

Voilà, j'ai un exercice a faire et j'avaoue ne pas savoir par quel bout le prendre ....  
Je m'explique, je dois coder en C une gestion de liste chaînée mais SANS utiliser la fonction Malloc, bizarre me direz vous ... c'est ce que j'ai dis aussi, on m'a rétorquer, "cest facil" !


Il suffit de créer un 'pool' statique et de gérer l'allocation à la main. Ca implique que les noeud de la liste chainée aient une taille fixe et qu'ils soient linéaires. Pas très efficace, et anti-généricité...
 
Je ne vois pas trop l'intérêt à part apporter une reflexion sur ce qu'est un allocateur de ressources... Pourquoi pas...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1036774
Lam's
Profil: bas.
Posté le 06-04-2005 à 09:16:15  profilanswer
 

Taz a écrit :

à part la connerie, je ne vois pas ce qui peux justifier ce genre de trucs. Ah si, l'envie d'une stack overflow  au lancement du programme.


 
J'ai déjà fait ça dans ma tendre jeunesse, pour une utilisation très très marginale: quand on souhaite écrire du code qui n'utilise pas la lib standard (pas de malloc, de printf, etc.).  
 
Ca permet de gérer soi-même toute la mémoire qu'on utilise sans avoir à dépendre d'un appel particulier pour obtenir la-dite mémoire (en fait, c'est le couple linker/loader qui fait tout le boulot). Ca permet donc d'avoir des executables plus petits, et également d'utiliser des addresses immédiates (ça c'est vraiment de bas niveau), plutôt que d'avoir à déréférencer des pointeurs. Ca m'étonnerais même pas que quelques virus fonctionnent comme ça d'ailleurs.

n°1036929
Taz
bisounours-codeur
Posté le 06-04-2005 à 11:00:09  profilanswer
 

non, ce que je veux dire, c'est que la formulation est stupide. Faire une simulation de pointeur dans un tableau (on référence pas avec un pointer, mais avec un indice), ça je comprends, c'est un exercice scolaire, j'en ai fait. Mais dire "sans malloc" ... ça veut rien dire. malloc c'est juste une façon d'obtenir de la mémoire, en grande quantité.
 
 
Lam's > rien à voir.

n°1037088
lkolrn
<comment ça marche?>
Posté le 06-04-2005 à 12:10:34  profilanswer
 

Emmanuel Delahaye a écrit :

Il suffit de créer un 'pool' statique et de gérer l'allocation à la main. Ca implique que les noeud de la liste chainée aient une taille fixe et qu'ils soient linéaires. Pas très efficace, et anti-généricité...
 
Je ne vois pas trop l'intérêt à part apporter une reflexion sur ce qu'est un allocateur de ressources... Pourquoi pas...


sans malloc ça veut dire que la chaîne restera "vide" de toute donnée stockée en mémoire, y'aura que la gestion des adresses à faire...
 
Par contre utiliser un grand tableau pour le faire, bah c bidon parce qu'une liste chaînée n'est po contigüe en mémoire... Faut ptet simuler ça justement... [:airforceone]  
 
 
Ton prof vous a donné un cas d'utilisation de votre programme ? Ou ça reste pure "théorie" ?

n°1037581
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-04-2005 à 15:41:04  profilanswer
 

Taz a écrit :

non, ce que je veux dire, c'est que la formulation est stupide. Faire une simulation de pointeur dans un tableau (on référence pas avec un pointer, mais avec un indice), ça je comprends, c'est un exercice scolaire, j'en ai fait. Mais dire "sans malloc" ... ça veut rien dire. malloc c'est juste une façon d'obtenir de la mémoire, en grande quantité.



Message édité par Emmanuel Delahaye le 06-04-2005 à 15:41:38

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1037892
m3z
il faut toujours faire simple
Posté le 06-04-2005 à 18:12:09  profilanswer
 

L'utilité de ce type de fonctionnement (pas d'allocation dynamique) réside le fait que le programme demarre et requisitionne une fois pour toute la mémoire nécessaire.
On ne se retourve jamais  dans le cas "plus de memoire dispo".
=> Fiabilité  
=> Pas de gestion d'erreur d'allocation mémoire.
 
Evidement c'est gourmand en mémoire !
A+


Message édité par m3z le 06-04-2005 à 18:13:23
n°1037925
Taz
bisounours-codeur
Posté le 06-04-2005 à 18:38:52  profilanswer
 

Emmanuel > j'aime bien ta façon de coder, mais des fois j'ai l'impression que tu fais le concours de l'indentation la plus profonde :/ et puis des fois, y a des virgules en début de ligne, c'est pas tip top :P
 
/* private variables =================================================== */
 
mem_s G;
 
ben pourquoi elle est pas static ?

n°1038043
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-04-2005 à 19:50:18  profilanswer
 

Taz a écrit :

Emmanuel > j'aime bien ta façon de coder, mais des fois j'ai l'impression que tu fais le concours de l'indentation la plus profonde :/ et puis des fois, y a des virgules en début de ligne, c'est pas tip top :P


 
En fait, c'est logique. J'ai un peu lancé cette mode sur certains forums Usenet et c'est repris petit à petit.. En effet, dans une liste de paramètres, la virgule appartient au paramètre suivant (le premier n'en a pas) :  
 
p1 [, p2[, p3[, p4[,*]]]]
 
Il est donc logique de coder comme ça si il y a beaucoup de paramètres :
p1  
, p2
, p3
, p4
 
les virgules sont alors automatiquement alignées par l'intendeur, ça facilite la maintenance par copié-collé...
 
Bref, c'est pas un gros problème...
 

Citation :


/* private variables =================================================== */
 
mem_s G;
 
ben pourquoi elle est pas static ?

Petit oubli... Voilà, c'est corrigé.


Message édité par Emmanuel Delahaye le 06-04-2005 à 19:57:57

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Listes chaînées SANS utiliser Malloc

 

Sujets relatifs
[J2ME] Je n'arrive pas à utiliser l'internationalisation en J2MEComment utiliser XPath
question triviale sur utilisation de mallocApprendre à utiliser Visual Basic
help! j'essaie de ne plus utiliser les tableaux et....Quel type utiliser ?
Utiliser la puissance de sa carte vidéo pour effectuer des calculsL'opération doit utiliser une requête qui peut être mise à jour.
Comment utiliser JAXP 1.3 avec JDK 1.4 ??utiliser c++ sur mandrake10 debutant
Plus de sujets relatifs à : Listes chaînées SANS utiliser Malloc


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR