Предположим, что T
содержит массив, размер которого может меняться в зависимости от инициализации. Я передаю указатель на вектор, чтобы избежать копирования всех данных и инициализировать следующим образом:Управление памятью с помощью std :: vector <T*>
for(int i=10; i < 100; i++)
std::vector.push_back(new T(i));
На выходе, один delete
s элемента вектора. Есть ли риск потери памяти, если данные, содержащиеся в T
, также являются указателями, даже если есть хорошие деструкторы? Например:
Из того, что я знаю, это плохой стиль, чтобы поместить элементы, созданные с новыми в векторы. Память вектора будет на куче в любом случае ... – guitarflow
Почему бы вам не использовать вектор внутри 'T', чтобы избавиться от трудностей с [Правило трех] (http://stackoverflow.com/questions/4172722) ? И почему бы не использовать 'vector', чтобы избежать проблем с удалением элементов при их удалении? –
Итак, 'T' имеет базовый массив типа' M', и вы сохраняете указатели на 'T' в' std :: vector'? Почему бы просто не использовать 'std :: vector>' и избежать всего лишнего ручного управления памятью? –
Chad