justement non c'est pas forcement quelquechose de bien...
les listes chainees c'est bien, mais pas partout, idem pour les tableaux, les arbres, les graphes, etc...
et la memoire que tu perd depend beaucoup de l'implementation de malloc...
sans compter que ces magnifiques listes chainees fragmentent ta memoire a fond
une des implementations assez courante (je sais pas si elle est utilisee sur gp), c'est d'arrondir la taille des blocs a une puissance de 2. (c'est celle que tu trouve sur certains os sur pc, les bsd entre autres il me semble)
donc tu fais le calcul, si t'as une structure qui fait 40 octets, que t'as 100 blocs de cette structure, ca te fera absolument pas 4000 octets, ca te fera 6400 octets. (plus la taille des blocs utilise par l'implementation, places juste avant ton bloc a toi)
maintenant tu fais un tableau de 100 de ces memes structures, ca te fait 4096 octets...
et un tableau n'a pas forcement une taille fixe non plus.
realloc est lent si tu realloue beaucoup de fois d'enormes blocs de mem et qu'il n'y a plus suffisemment de place dans le heap juste apres le bloc pour l'etendre, vu que realloc devra le recopier a coups de memcpy vers le nouvel emplacement. si ton bloc n'a rien devant, le cout du realloc est quasiment le meme que celui d'une allocation normale.
mais si tu realloue par blocs de 5 ou 10 structures a la fois, tu devra reallouer _beaucoup_ moins souvent ---> cout du realloc quasiment nul (la encore dans l'exemple des bombes... de tte facons plus de 10 bombes en meme temps c'est assez improbable, donc si t'alloue ton tableau initial a 10 ca sera tres rare si tu dois l'agrandir...)
sans compter la perte de temps que represente le parcours d'une liste chainee compare a l'indexation directe d'un tableau...
enfin bon comme a dit manoloben on s'en fout... si y a de la mem ou de la vitesse a gagner c'est sans doute pas a cet endroit
donc pour des trucs comme ca c'est d'abord surtout la clarte du code qui importe... et perso je trouve qu'un code de manipulation de tableaux est plus rapide et simple a lire qu'un code de manipulation de liste chainees...
et puis si tu veux faire un truc "bien", tu peux toujours jarter ta liste chainee, et faire un graphe, comme ca t'aura des cluster bombs, banana bombs... des... hem heu dsl.. trop joue a worms3d ce WE
