无需删除动态数据?

时间:2014-10-05 15:34:02

标签: c++

我有以下代码:

class A {
public:
    virtual void f() {
        cout << "1" << endl;
    }
};

class B : public A {
public:
    void f {
        cout << "2" << endl;
    }
};

int main() {
    A* a = new B();
    a->f();
    return 0;
}

我的问题是:为什么在主函数返回之前没有必要删除? 根据我的理解,这段代码会导致内存泄漏,我错了吗?

[UPDATE] 我使用valgrind检查了以下代码,它让我更加困惑。它说存在内存泄漏。

2 个答案:

答案 0 :(得分:1)

确实存在内存泄漏。它持续从main返回到程序的退出,在这种情况下非常非常短。

答案 1 :(得分:0)

  

“根据我的理解,此代码会导致内存泄漏,我错了吗?”

不,你应该有delete。虽然内存泄漏通常无关紧要,但由于操作系统将在return 0;之后回收从进程分配的所有内存。