Domanda

Ho scritto un manager C / C ++ di memoria per le allocazioni di heap (sovraccarico new / delete e malloc / realloc / libera, sulla base di malloc di Doug Lea, ma progettato per essere aspettare gratuito) e sembrano avere qualche problema con la frammentazione. Ci sono delle buone risorse là fuori che illustrano le buone strategie per evitare la frammentazione attraverso il gestore?

Si prega di notare che non riesco a riorganizzare la memoria che è già stata assegnata (non usare puntatori intelligenti con GUID) e ri-scrittura al sistema di utilizzare piscine invece di allocazioni di heap è irrealizzabile.

Grazie,
Concessione

È stato utile?

Soluzione

Si consiglia di ottenere qualche ispirazione da jemalloc ( http: // people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf ) - questo allocatore è usato nel nuovo Firefox esplicitamente causa delle sue capacità anti-frammentazione

.

Altri suggerimenti

Date un'occhiata a come i progetti più maturi come glibc fanno.

Un rapido Google trova questo , con una pila di riferimenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top