Dan*_*iel 1 c++ memory-management vector
如果我delete
是一个指针向量,delete
在它内部的指针上调用?例如:
vector<Obj *> v = new vector<Obj *>();
v.push_back(new Obj());
delete v;
Run Code Online (Sandbox Code Playgroud)
在此之后,还Obj
删除了吗?
当矢量被破坏时,它会破坏每个包含的元素.指针在销毁时不会做任何事情,因此内存泄漏并且delete
不会单独调用它们.
更好的解决方案是使用 std::unique_ptr
vector<std::unique_ptr<Obj> >
Run Code Online (Sandbox Code Playgroud)
unique_ptr
将删除它在销毁时指向的对象.