Борьба с фрагментацией в собственном менеджере памяти - PullRequest
0 голосов
/ 24 февраля 2009

Я написал диспетчер памяти на языке c / c ++ для распределения кучи (перегружен new / delete и malloc / realloc / free, основанный на malloc Дуга Ли, но рассчитан на свободное ожидание) и, похоже, имеет некоторые проблемы с фрагментацией. Есть ли какие-нибудь хорошие ресурсы, которые детализируют хорошие стратегии для избежания фрагментации через менеджера?

Обратите внимание, что я не могу переставить память, которая уже была выделена (без использования интеллектуальных указателей с GUID), и переписать систему для использования пулов вместо выделения кучи невозможно.

Спасибо
Грант

Ответы [ 2 ]

2 голосов
/ 24 февраля 2009

Возможно, вы захотите получить вдохновение от jemalloc (http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf) - этот распределитель явно используется в новом Firefox благодаря его возможностям антифрагментации.

0 голосов
/ 24 февраля 2009

Посмотрите, как это делают более зрелые проекты, такие как glibc.

Быстрый Google находит это со стеком ссылок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...