这是我的问题,基本上我正在研究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)
}
我知道这不是最简单/最好的方法,但这不是我的选择,我只是问你是否知道如何限制内存泄漏..
答案 0 :(得分:0)
您正在您的copylist函数的return语句中分配内存。
为了避免内存泄漏,任何调用copylist的人都需要删除使用它后从copylist返回的项目。