Я реализую класс типа пула памяти. Один из методов выделяет B байтов памяти и возвращает на него пустой указатель, при этом внутренняя обработка буферов и перемещение по старой памяти обеспечивает непрерывность всей памяти, управляемой объектом во время его существования (аналогично тому, как будет иметься std :: vector). предварительно выделенный буфер и выделение дополнительного пространства после того, как буфер закончится, копируя информацию из старого буфера в новый, чтобы гарантировать непрерывность всей памяти). У меня вопрос, как я могу гарантировать, что вся выделенная память является непрерывной? Если я хочу перейти от объекта к объекту вручную, используя
static_cast<desired_type*>(buffer_pointer + N)
Этот метод, естественно, потерпит неудачу, если местоположение объекта будет смещено на некоторую величину, которая не является просто суммой размеров предыдущих объектов. Я новичок в написании пользовательских пулов памяти, поэтому мне просто интересно, как я могу убедиться, что выделенная память не фрагментирована, или получить доступ к расположению нового фрагмента, чтобы я мог вручную индексировать через блок malloc () - ed объем памяти? Спасибо.