Если вы задаете этот вопрос, я думаю, вы должны начать изучать пользовательский распределитель. Для начала, если вы выделите большой блок памяти, вы можете использовать его как стек или кучу, изменяя внутренние компоненты распределителя. Вы должны распределить все объекты с помощью умного указателя (чтобы предотвратить утечки памяти), и вся память будет передана вам из вашей пользовательской кучи.
Это позволяет вам настраивать реализацию распределения в соответствии с потребностями вашего клиента, а также дает вам производительность распределителя на основе стека при такой настройке.
Ваш код всегда будет использовать создание объектов в стиле «куча», поэтому вам потребуется только 1 способ кодирования и вам не понадобятся условные макросы. Проверьте распределители блоков (которые создают несколько куч блоков фиксированного размера, вы даете первому свободному блоку следующего размера до вызывающего (например, блоки имеют размер 16 байтов, 32 байта, 64 байта и т. Д.), Это очень быстро выделить и освободить, хотя это неэффективно с использованием памяти).