在没有虚拟析构函数的派生类中使用std :: vector删除基指针

时间:2016-07-03 20:21:57

标签: c++ memory-leaks virtual-destructor

我想检查如何通过基类型指针删除对象。 第一种情况:

Base{int x};
Derived : Base {
int a;
};
Base *p = new Derived;
delete p;

第二种情况:

Base{int x};
Derived: Base {
vector<int> v;
}
Base *p = new Derived;
delete p;

1)在第一种情况下是否存在任何内存泄漏并且不需要虚拟析构函数是否正确? 2)在第二种情况下是否正确可能存在内存泄漏,因为std :: vector可能是通过一些动态内存分配隐含的?这意味着在第二种情况下,虚拟析构函数是必要的吗?

0 个答案:

没有答案