内存泄漏,在c ++中复制元素和指针列表

Memory leak, copy list of elements and pointers in c++

这是我的问题,基本上我正在使用 C++ 处理图形和路径查找。我面临一些崩溃,因为我 运行 内存不足。 我使用检测内存泄漏工具来帮助找到问题,它出现在我的 copyList 函数中:

template<class T>
PElement<T> * PElement<T>::copieListe(PElement<T> * original)
{
    if (!original)
    {
        return NULL;
    }
    else
    {    
        return new PElement<T>(new T(*original->v),copieListe(original->s));
    }
} 

这是 PElement class :

template <class T>
class PElement
{
public :
T * v;
PElement<T> * s;
}

copyList中调用的构造函数:

template <class T>
PElement<T>::PElement( T * v, PElement<T> * s ):v(v),s(s){}

我已经使用这个函数一千次了...所以根本不需要内存泄漏。我的图表有一个边和顶点的列表,所以你知道这是关于什么的:

template <class S, class T>
class Graphe
{
protected:
int prochaineClef;
public:

PElement< Sommet<T> > * lSommets; // liste de sommets (vertices)
PElement< Arete<S,T> > * lAretes; // liste d'arêtes (edges)
}

我知道这不是 easiest/best 的方法,但这不是我的选择,我只是想问您是否知道我可以如何限制内存泄漏..

您正在 copylist 函数的 return 语句中分配内存。

为了避免内存泄漏,调用 copylist 的任何人都需要在使用完后从 copylist 中删除您return编辑的项目。