我想检查如何通过基类型指针删除对象。 第一种情况:
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可能是通过一些动态内存分配隐含的?这意味着在第二种情况下,虚拟析构函数是必要的吗?