ThibautLe 31/05/2011 à 00:39
Oui, sauf mauvaise compréhension des choses de ma part, un alignement de la taille des blocs à x octets fait perdre en moyenne x/2 octets par bloc alloué. Ta solution est moins rapide c'est vrai, mais elle induit une perte moyenne inférieure à la mienne. Mais en complexifiant légèrement le code je dois pouvoir la réduire (les blocs auraient une taille minimale de 48 octets et seraient alignés sur un multiple de 8).
Il me semble que, dans un topic de la section, quelqu'un avait donné une idée pour accélérer l'allocation dans un système à bitmap comme le tien. Tu as une stratégie spéciale de recherche ?
C'est vrai que les handles de TI sont ingénieux. Bon, il y a au moins deux inconvénients. Ca interdit le multitache, et il faut penser à mettre à jour tous les pointeurs du programme après une allocation. Cela dit, on peut aussi bloquer ceux dont on a besoin à l'entrée d'une fonction, et les débloquer à la sortie. Ceux qui ne sont pas bloqués sont déplacables, ce qui est déjà pas mal.
C'est peut être surtout pour les fichiers qu'ils ont fait ça ? Tous sont libres, sauf celui en cours d'utilisation. Du coup, les fichiers ne fragmentent pas la mémoire.