我正在更改其他人编写的代码。在代码的一部分中,他们使用指向指针向量的指针。
class2 *pointofclass2 = new class2();
class1 * pointofclass1 = new class1(.....)
pointofclass2->push_back(pointofclass1);
然后是代码
delete pointofclass2;
现在我认为这会导致内存泄漏。我以前从来没有遇到这个,所以不确定这是不是原因?任何帮助将不胜感激。如果是这样,释放内存的正确方法是什么?
答案 0 :(得分:1)
您正在删除pointofclass2,但可能没有删除在class1的析构函数中保存class1指针的向量。在新的class1(...)中创建的对象被删除了哪里?这是C ++,没有自动垃圾收集。
现在,如果class2是一个向量,你实际上并不需要 来创建指向它的指针,因为vector无论如何都会在堆上分配内存。
答案 1 :(得分:1)
除非通过push_back()
添加的元素在class2
的dtor中被销毁,否则这是泄漏。