【发布时间】:2016-04-02 07:54:00
【问题描述】:
我对一个经常问自己的问题有一个疑问,就是这种情况:
两个类,没有虚析构函数
class Base
{
int myInt;
};
class Derived : public Base
{
int myIntDerived;
};
int main()
{
Base *base = new Derived;
Derived *derived = new Derived;
delete base;
delete derived;
}
说第一次删除会导致内存泄漏,第二次正常吗?
【问题讨论】:
-
在实践中,一切正常,没有内存泄漏。从理论上讲,这是未定义的行为,任何事情都可能发生。实际上,当
Derived拥有单独分配的内存时,您所询问的那种内存泄漏就会发生。
标签: c++ memory virtual destructor