内存泄漏,在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编辑的项目。
这是我的问题,基本上我正在使用 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编辑的项目。