Вам требуется написать свой аллокатор, а также произвести сравнение его производительности c std::allocator
Принцип работы аллокатора должен быть следующий:
- Аллокатор при конструировании выделяет большой объем памяти. Освобождение происходит только в конце “жизни”. Никаких аллокаций памяти в процессе “работы” быть не должно
- Вся память должна быть “разбита” на “кусочки”. Размеры кусочков, а также их количество параметризуется. “Кусочки” одинакового размера разумно объединить в группы
- При запросе на выделение памяти размера “N” аллокатор ищет свободный подходящий кусочек нужного размера (ближайший свободный, подходящий по размеру). Если такого нет, то происходит исключение
- При освобождении, аллокатор возвращает кусочек к списку свободных.
- Ваш аллокатор должен соответствовать требованиям к аллокаторам для C++17