stl - Destructing the Vector contents in C++ -
i have std::vector
of element*
. when destructor called. how different if vector of element
std::vector<element*> vect; .. struct element { record *elm; element(record *rec) { elm = new record(); //...copy rec } ~element() { delete elm; } };
i using vector follows:
element *copyelm = new element(record); vect.push_back(copyelm);
in above code, how can ensure there's no leak.
vector
call release memory of object holding (i.e. pointers) not release memory of object pointing to. need release memory of element
object yourself. if vector<element>
whenever push_back
copy of element inserted vector. vector
guarntess release memory allocated copied object. aware current definition of element
seg fault have not defined copy ctor , assignment operator.
edit if reason don't want use smart pointers, option write release
function goes through entire vector , calls delete
on stored pointer.
Comments
Post a Comment