c-在析构函数中是否需要删除?

我有以下代码,我想知道是否需要在这里删除b?
我的操作系统会自动清除分配的内存区域吗?

class A
{
    B *b;

    A()
    {
        b = new B();
    }

    ~A() 
    {
        delete b;
    }
};

非常感谢.

最佳答案
是的,您必须删除每个拥有的拥有新对象的对象.在这种情况下,类A似乎拥有类B的那个实例,并负责调用delete.

使用智能指针来管理B类实例生存期会更好.还要注意,您必须在类A中实现或禁止赋值运算符和复制构造函数,以防止浅复制对象,这会给您带来很多麻烦.

转载注明原文:c-在析构函数中是否需要删除? - 代码日志