быстрый new/delete
От: maks1180  
Дата: 28.11.22 09:36
Оценка:
Есть приложение, создаёт в динамической памяти много маленьких объектов (20-50 байт) и часто удаляет и новые создаёт.
Так же нужно ещё делать обход всех созданных объектов.
Всего около 4 типов объектов, решил я сделать класс который будет реализовывать malloc+free для каждого типа объекта.
Вот такое ТЗ:
// Данный класс позволяет
// 1. быстро выделять и освобждать память для объекта, за счёт того, что:
// 1.1 память выделяется сразу большим кусом (страницей) на count_in_page=2^N объектов, когда закончится, выделяется новая страница.
// 1.2 при free() память физически не освобождается, а лишь помечается как освобождённая, при следующем alloc он заберёт возможно её (или освобождённую из другой страници)
// 2. Выделенная память не поменяет адрес (в отличии от std::vector) и не возникнет задержки при увеличении количества элементов (в отличии от std::vector)
// 3. Так же есть индекс объекта, он не будет изменён и будет уникальным в экземпляре данного класса. Есть быстрое получение адреса объекта по его индексу
// 4. Есть возможность пройтись по всем содержайщимся объектам, но немного медленнее чем std::vector

Соотвественно данный класс выделит память, а конструктор/деструктор уже самому нужно будет вызвать.

Может есть готовое решение или что-то лучше ?
===============================================
(реклама, удалена модератором)
Отредактировано 28.11.2022 9:37 maks1180 . Предыдущая версия . Еще …
Отредактировано 28.11.2022 9:36 maks1180 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.