Почти все вы от базы, если вы говорите о куче Microsoft. Синхронизация легко обрабатывается, как и фрагментация.
Текущей перферированной кучей является LFH, ( LOW FRAGMENTATION HEAP), это значение по умолчанию в Vista + OS и может быть настроено на XP, через gflag без особых проблем
Легко избежать каких-либо проблем с блокировкой / блокировкой / конфликтом / перебросом шины и многим другим с
HEAP_NO_SERIALIZE
опция во время HeapAlloc или HeapCreate. Это позволит вам создавать / использовать кучу, не вступая в блокированное ожидание.
Я бы порекомендовал создать несколько куч, с HeapCreate, и определить макрос, возможно, mallocx (enum my_heaps_set, size_t);
было бы хорошо, конечно, вам нужен realloc, бесплатный также для установки в качестве подходящего. Если вы хотите получить фантазию, сделайте free / realloc автоматически определяющим, какой дескриптор кучи самостоятельно, путем оценки адреса указателя или даже добавив некоторую логику, чтобы позволить malloc определить, какую кучу использовать, на основе его идентификатора потока, и построив иерархия куч для каждого потока и общих глобальных куч / пулов.
Куча * API-интерфейсы называются внутренне malloc / new.
Вот хорошая статья о некоторых проблемах с динамическим управлением памятью , с некоторыми еще более приятными ссылками . Для обработки и анализа активности кучи.