C++析构函数释放内存出错
下面代码为图的邻接表的构造函数和析构函数,析构函数中如果我把那个for循环取消注释,程序就会报错;而这个for循环注释掉,程序就能正常退出。有些不合理啊//构造函数Gra...
下面代码为图的邻接表的构造函数和析构函数,析构函数中如果我把那个for循环取消注释,程序就会报错;而这个for循环注释掉,程序就能正常退出。有些不合理啊
//构造函数
Graphl(int numvert)
{
Init(numvert);
}
//析构函数
~Graphl()
{
delete [] mark;
//此处有问题
// for(int i=0;i<numVertex;i++)
// {
// delete [] vertex[i];
// }
delete [] vertex;
}
//初始化图
void Init(int n)
{
int i;
numVertex=n; //顶点数
numEdge=0; //边数
mark=new int[n]; //标记顶点是否被访问过
for(i=0;i<numVertex;++i)
mark[i]=UNVISITED;
vertex=(LList<Edge>**)new LList<Edge>*[numVertex];
for(i=0;i<numVertex;i++)
vertex[i]=new LList<Edge>();
} 展开
//构造函数
Graphl(int numvert)
{
Init(numvert);
}
//析构函数
~Graphl()
{
delete [] mark;
//此处有问题
// for(int i=0;i<numVertex;i++)
// {
// delete [] vertex[i];
// }
delete [] vertex;
}
//初始化图
void Init(int n)
{
int i;
numVertex=n; //顶点数
numEdge=0; //边数
mark=new int[n]; //标记顶点是否被访问过
for(i=0;i<numVertex;++i)
mark[i]=UNVISITED;
vertex=(LList<Edge>**)new LList<Edge>*[numVertex];
for(i=0;i<numVertex;i++)
vertex[i]=new LList<Edge>();
} 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询