Во встроенной системе типов я создал Small Object Allocator, который поддерживает стандартную систему выделения памяти. Этот распределитель является классом Boost :: simple_segregated_storage <>, и он делает именно то, что мне нужно - O (1) время выделения / освобождения небольших объектов за счет незначительной внутренней фрагментации. Мой вопрос, как лучше это объявить. Прямо сейчас, это статическая область видимости, объявленная в нашем модуле mem code, что, вероятно, хорошо, но она кажется немного открытой и теперь также навсегда связана с этим модулем. Обычно я объявляю его моностатическим или одноэлементным, но при этом используется динамический распределитель памяти (там, где он расположен). Кроме того, наш динамический распределитель памяти инициализируется и используется до того, как в нашей системе происходит инициализация статического объекта (как, опять же, Диспетчер памяти в значительной степени является самым фундаментальным компонентом движка. Чтобы обойти эту ловушку 22, я добавил дополнительное «если существует маленький распределитель памяти», чтобы посмотреть, существует ли еще маленький распределитель объектов. Это, если это теперь должно быть выполнено на каждом маленьком распределении объекта. В плане вещей это почти ничтожно мало, но это все еще беспокоит меня.
Итак, вопрос в том, есть ли лучший способ объявить эту часть диспетчера памяти, которая помогает отделить ее от модуля памяти и, возможно, не стоить этого дополнительного оператора isinitialized () if? Если этот метод использует динамическую память, пожалуйста, объясните, как обойти отсутствие инициализации маленькой части объекта диспетчера.