Question

J'ai écrit un c / c ++ gestionnaire de mémoire pour les allocations de tas (surcharge nouveau / supprimer et malloc / realloc / gratuit, basé sur malloc Doug Lea, mais conçu pour être attendre gratuit) et semblent avoir des problèmes avec la fragmentation. Y a-t-il des bonnes ressources là-bas qui détaillent les bonnes stratégies pour éviter la fragmentation via le gestionnaire?

S'il vous plaît noter que je ne peux pas réorganiser la mémoire qui a déjà été alloué (ne pas utiliser des pointeurs intelligents avec GUIDs) et réécrivant le système à utiliser des pools au lieu des allocations de tas est infaisable.

Merci,
Grant

Était-ce utile?

La solution

Vous pouvez vous inspirer de jemalloc ( http: // people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf ) - ce allocateur est utilisé dans le nouveau Firefox explicitement en raison de ses capacités anti-fragmentation

.

Autres conseils

Jetez un oeil à la façon dont des projets plus matures comme le font glibc.

Un rapide Google trouve cette , avec une pile de références.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top