Pregunta

He escrito un gestor de C / C ++ memoria para asignaciones del montón (sobrecargada nueva / borrar y malloc / realloc / libre, basado en malloc de Doug Lea, pero diseñado para ser esperar libre) y parece estar teniendo algunos problemas con la fragmentación. ¿Hay buenos recursos por ahí que detallan buenas estrategias para evitar la fragmentación a través del administrador?

Tenga en cuenta que no puedo reorganizar la memoria que ya ha sido asignado (no el uso de punteros inteligentes con GUID) y volver a escribir el sistema para utilizar las piscinas en lugar de asignaciones del montón es inviable.

Gracias,
Subvención

¿Fue útil?

Solución

Es posible que desee obtener algo de inspiración de jemalloc ( http: // people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf ) - este asignador se utiliza en el nuevo Firefox explícitamente debido a sus capacidades anti-fragmentación

.

Otros consejos

Tener un vistazo a cómo los proyectos más maduros como glibc lo hacen.

Una búsqueda rápida en Google encuentra este , con una pila de referencias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top