Здесь есть две вещи, вызывающие динамическое выделение памяти:
vector::push_back
new AClass()
Вот одна идея, как сократить динамическое распределение памяти.
Первый шаг - вызвать m_Objects.reserve(N);
в конструкторе AnotherClass
, где N
- максимальное количество AClass
объектов, которые вы хотите сохранить в любой момент времени. Это резервирует достаточно памяти для устранения необходимости динамического распределения на vector::push_back
.
Второй шаг состоит в том, чтобы m_Objects
содержал объекты вместо указателей, то есть, чтобы он был напечатан std::vector<AClass>
вместо std::vector<AClass*>
. Это позволяет вам пропустить new
и напрямую создать новый объект, увеличив контейнер:
m_Objects.resize(m_Objects.size() + 1);
Теперь при добавлении нового объекта не будет динамического размещения.