动态链表的释放,高手帮忙看看

[复制链接]
查看11 | 回复2 | 2008-12-3 11:18:22 | 显示全部楼层 |阅读模式
//#include "stdafx.h"
#include"math.h"
#include
class Matrix
{
public:
Matrix()
{
bool flag=true;
LinkNode *p=&head;
while(flag)
{
cout>rc;
if(rc/sqrt(rc)==sqrt(rc))

flag=false;
}
cout>p->data;
p->row=i;
p->column=i/k;
p=p->next=new LinkNode;
}
}
~Matrix()
{
LinkNode *pfind=NULL,*pfree=NULL;
pfind=&head;
if(pfind!=NULL)
{
pfree=pfind;
pfind=pfind->next;
delete pfree;
}
}
private:
struct LinkNode
{
int row;
int column;
int data;
LinkNode *next;
}head;
int rc;
};
int main(int argc, char* argv[])
{
Matrix ma;
return 0;
}
析构函数在释放链表时有BUG,指点下小弟!不胜感激!

回复

使用道具 举报

千问 | 2008-12-3 11:18:22 | 显示全部楼层
看了下你head并没有动态分配空间,而是程序编译就分配了空间。而你在释放的时候连同head一起释放,就出问题了。LinkNode *pfind=NULL,*pfree=NULL;pfind=&head;//pfind指向了headif(pfind!=NULL){pfree=pfind;pfind=pfind->next;delete pfree;//这里会出现释放head的位置,而head并没有动态分配空间。}...
回复

使用道具 举报

千问 | 2008-12-3 11:18:22 | 显示全部楼层
具体说一下什么问题? 我用DEV C++编译的 头文件改成了 #include #include using namespace std; 没有任何警告和错误…………...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行