指针向量的指针

时间:2012-03-06 21:11:20

标签: c++ memory pointers memory-leaks

我正在更改其他人编写的代码。在代码的一部分中,他们使用指向指针向量的指针。

            class2 *pointofclass2 = new class2();

        class1 * pointofclass1 = new class1(.....)

        pointofclass2->push_back(pointofclass1);

然后是代码

    delete pointofclass2;

现在我认为这会导致内存泄漏。我以前从来没有遇到这个,所以不确定这是不是原因?任何帮助将不胜感激。如果是这样,释放内存的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您正在删除pointofclass2,但可能没有删除在class1的析构函数中保存class1指针的向量。在新的class1(...)中创建的对象被删除了哪里?这是C ++,没有自动垃圾收集。

现在,如果class2是一个向量,你实际上并不需要 来创建指向它的指针,因为vector无论如何都会在堆上分配内存。

答案 1 :(得分:1)

除非通过push_back()添加的元素在class2的dtor中被销毁,否则这是泄漏。