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

时间:2015-03-03 22:30:30

标签: c++ memory-leaks

这是我的问题,基本上我正在研究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类:

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){}

我使用这个功能一千次......所以根本不需要内存泄漏。我的图表有一个egdes和vertex的列表,所以你知道这是什么:

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)
}

我知道这不是最简单/最好的方法,但这不是我的选择,我只是问你是否知道如何限制内存泄漏..

1 个答案:

答案 0 :(得分:0)

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

为了避免内存泄漏,任何调用copylist的人都需要删除使用它后从copylist返回的项目。