为什么我删除指向基类的指针我有内存泄漏?

gli*_*ite 4 c++ polymorphism memory-leaks

我有base继承base该类的类和类:

class base
{
};

class derived : public base
{ 
    std::string str;
};
Run Code Online (Sandbox Code Playgroud)

我需要derived使用指向类的指针来管理base类,但以下代码会导致内存泄漏:

base* ptr = new derived();
delete ptr;
Run Code Online (Sandbox Code Playgroud)

我有演员ptr,还是有更好的选择?

tmp*_*rce 7

您需要在基类中使用虚拟析构函数,以便在运行时找到并调用派生类的析构函数.有关详细信息,请参阅此问题和答案.