Помилка, яка часто робиться, полягає в тому, щоб написати свої власні алокатори, щоб ви мали більше контролю над тим, скільки пам’яті використовується кожною системою та мати більшу видимість того, що відбувається. Набагато кращий спосіб досягти цього - використовувати профайлер пам'яті. Профілів пам’яті безліч , один із прикладів - мій профілер MemPro . Це абсолютно неінвазивний спосіб відстежувати все використання пам’яті, і ви можете автоматично розбивати її на підсистеми за допомогою фільтрів підстановок для виклику. В ідеалі найкраще, щоб розподіл пам’яті та відстеження пам’яті було повністю розділеним, вони мають абсолютно різні вимоги.
Довільний поділ вашої пам’яті на пули часто може завдати шкоди, оскільки кожен пул матиме накладні витрати. Ви можете використовувати набагато більше пам’яті, ніж вам потрібно, фактично не усвідомлюючи цього. Щоб зменшити витрату, завжди краще збивати все разом, а потім слабкість ділиться всією системою.
Єдиними причинами використання спеціальних алокаторів є продуктивність процесора (головним чином для когерентності кешу) та обмеження фрагментації. Прекрасним прикладом цього є система частинок. Ви хочете, щоб усі частинки були суміжними в пам'яті, і ви не хочете перецьовувати основну пам'ять з великою кількістю короткочасних виділень. Ще один хороший приклад для розділення - це сценарій мови.
Якщо ви хочете прикладу заміни малика загального призначення, ви можете подивитися на мій розподільник VMem . Він був використаний у ряді ігор AAA, що поставляються. У ньому є методи, які обмежують фрагментацію і знижують слід пам'яті, що є критичним для консольних ігор. Це також дуже швидко в умовах високої вмісту ниток. Мій веб-сайт має велику документацію щодо цих методів.