【发布时间】:2014-02-03 18:04:15
【问题描述】:
我有一个类 A,它的成员是另一个类 B 的对象指针向量
class A
{
std::vector<B*> m_member_A
m_member_A 是通过使用 new 运算符创建 B 的对象来填充的
B* b1 = new B;
m_member_A.push_back(b1);
在 A 的析构函数中,释放所有内容是否正确?
A::~A()
{
for(int i = 0; i < m_member_A.size(); ++i)
{
delete m_member_A[i];
}
m_member_A.clear();
}
【问题讨论】:
-
是的,这是正确的方法,实际上是 c++11 之前的唯一方法。在c ++ 11中,您可以只使用vector
>,它会自动释放 -
'在 A 的析构函数中,下面的释放一切是否正确?' 是的,它是正确的。您为什么不使用像valgrind 这样的良好内存泄漏检测工具自己检查一下?
-
看起来不错。你有什么理由认为它不正确吗?
标签: c++ class vector destructor member