8Fermer10
geogeoLe 30/10/2007 à 22:14
Perso je vois une gestion de la mémoire comme ceci :
On possède une zone mémoire de taille fixe en puissance de 2 soit 64 Ko par exemple. Le principe est de découper celle-ci en différents blocs (de taille en puissance de 2 et de nombre décroissant).
Par exemple :

32 de 2 octets
28 de 4 octets
26 de 8 octets
22 de 16 octets
18 de 32 octets
...
Bon en gros le principe (je ne sais plus le nom de la suite ou la méthode mathématiques) est d'avoir un nombre de blocs qui soit en concordance avec la taille moyenne d'allocation afin d'éviter une trop grande dispersion des données en mémoire. Si trop de petits blocs avec des allocations moyennes assez conséquentes cela entraine une mémoire (gruyère), le contraire, une mémoire "perdue".

Connaissant la distribution de la table d'allocation (la fameuse suite à trouver) et connaissant la taille de l'allocation il devient facile d'allouer les blocs utiles (ni trop de petits bloc ni un bloc de trop grande taille)...

Je sais pas si j'ai été clair.

La libération devient facile aussi. Connaissant l'adresse il devient facile de connaitre la suite de blocs alloués et de les marquer comme libérés. La difficulté c'est le garbage collect mais inutile dans ton cas.