🍬 Чек-лист: Allocators — контроль над памятью
STL позволяет полностью контролировать аллокацию памяти через allocators.
✏️ Зачем нужны:
✓ Pool allocators для объектов одного размера (быстрее malloc)
✓ Stack allocators для временных данных без обращения к куче
✓ Tracking allocators для профилирования утечек памяти
✓ Aligned allocators для SIMD-оптимизированных структур
✏️ Стандартные allocators:
✓ std::allocator — дефолтный, работает через new/delete
✓ std::pmr::monotonic_buffer_resource — аллокация из буфера
✓ std::pmr::unsynchronized_pool_resource для многократного переиспользования
✓ std::pmr::polymorphic_allocator для динамической смены стратегии
✏️ Создание кастомного:
✓ Реализуй allocate() и deallocate()
✓ Объяви value_type, size_type, difference_type
✓ Не забудь про rebind для типов внутри контейнера
✓ Сделай allocator stateless для оптимизаций
💡Как измерить результат:
Сравни количество malloc-вызовов через profiler до и после внедрения кастомного allocator. Цель — уменьшить на 50%+.
🍪 Факт:
В game dev кастомные allocators — стандарт. Они значительно ускоряют аллокацию по сравнению с malloc.
Библиотека C/C++ разработчика
#буст
Post #6183
3.13K
- 👍 5
- 🔥 2