Gov*_*van 2 c++ valgrind memory-leaks smart-pointers c++11
给Holder下面的课程:
class Holder {
string name;
std::vector<std::unique_ptr<Object>> objects;
public:
Holder(string name): name(name){
}
~Holder(){};
Holder & operator=(const Holder & holder) = delete;
vector<unique_ptr<Object>> const& Holder::getContent()const{
return this->objects;
}
void Holder::add(unique_ptr<Object> objPtr){
this->objects.push_back(move(objPtr));
}
};
Run Code Online (Sandbox Code Playgroud)
如果我在下面的方法中调用我的Holder对象:
void HolderTest::addObject(){
Holder *holder = new Holder("bag");
holder->add(unique_ptr<Object>(new Object("test")));
vector<unique_ptr<Object>> const& objects = holder->getContent();
const std::string name = objects[0].get()->name();
CPPUNIT_ASSERT_EQUAL((string)"test", name);
delete holder;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:我应该在Holder析构函数中调用unique_ptr的clear方法向量来避免内存泄漏,如下所示?
~Holder(){
this->objects.clear();
};
Run Code Online (Sandbox Code Playgroud)
我的另一个问题是,我仍然可以使用"Valgrind Tools Integration"3.0.0.201502180018版来查找c ++ 11应用程序中的内存泄漏,或者它无法在c ++ 11程序中找到内存泄漏吗?
| 归档时间: |
|
| 查看次数: |
1537 次 |
| 最近记录: |