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>();
}
展开
 我来答
seizeF
2014-06-21 · TA获得超过412个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:226万
展开全部

你的vertex类型是LList<Edget>**,每个vertex数组元素是一个LList<Edge>*,所以你delete时不能使用delete[],而是应该是delete,也就是

 		for(int i=0;i<numVertex;i++)
{
  delete vertex[i];
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式