struct MM
{
int count;
struct MM * next;
}
struct GG
{
int a;
struct MM * head;
}
void addnode(struct GG * gg)
{
struct MM * p1 = gg->head;
for(int i = 0; i < 11 ; i ++)
{
struct MM * p2 = new struct MM;
p1->next = p2;
p1 = p2;
}
}void deletenode(strcut MM * mm)
{
if(mm->next != NULL)
deletenode(mm->next);
delete mm; // 在.net环境下说,用户未处理异常
}
程序只要运行到 最后一句就报错.
{
int count;
struct MM * next;
}
struct GG
{
int a;
struct MM * head;
}
void addnode(struct GG * gg)
{
struct MM * p1 = gg->head;
for(int i = 0; i < 11 ; i ++)
{
struct MM * p2 = new struct MM;
p1->next = p2;
p1 = p2;
}
}void deletenode(strcut MM * mm)
{
if(mm->next != NULL)
deletenode(mm->next);
delete mm; // 在.net环境下说,用户未处理异常
}
程序只要运行到 最后一句就报错.
解决方案 »
- visual studio 2010 编译错误(全程序)求解
- 如果只知道一个程序的ID(dwProcessID和hProcess),如果激活这个进程,就像按ALT+TAB去激活一个程序一样
- VC初学者求问
- 属性页问题。为什么生成属性页后页面不聚焦(点不了任何东西)
- COM线程的问题(也就是套间问题),超级怪!!!!!!!!!!!!
- 真正的专业级高速ASP CGI空间
- 菜鸟提问:COM/COM+技术应用在什么方面?请各位大虾客给个醒!!!
- 怎样把LARGE_INTEGER转化为字符串?
- 我下载了Visual Studio.net工七张盘,我想装vb.net怎么装阿?
- 怎样使我的MDI程序可以获得较多的CPU时间?
- 我把工具箱里RichEdit20A控件拉到对话框上 对话框就显示不出来了,但能编译
- 关于QQ登陆请求返回包的问题
{
struct MM * p1 = gg->head;
for(int i = 0; i < 11 ; i ++)
{
struct MM * p2 = new struct MM;
p1->next = p2;
p2->next = NULL; //加这一句试试
p1 = p2;
}
}
p2->next =NULL;
struct MM * p1 = gg->head;
加上这句gg->head->next = NULL ;另外的p2->next = NULL ;也要加上
另外,如果确实是你new得到的指针那么估计就是你在其他的代码里对那个节点的操作出现越界、溢出的问题了,也要检查下
{
if(mm!=NULL)
{
if(mm->next!=NULL)
deletenode(mm->next);
else
delete mm;
}
}
如果是缺少这一句:p2->next = NULL; //加这一句试试
在if 里面就会出错。另外,楼主要说明白点,delete mm; 这句,会运行多次的,到底是第几次运行到这时才出的错。我怀疑是最后一次删除头节点的出错了,可能是因为你的头节点在定义的时候,并不是通过new为他动态申请了空间,结果导致删除出错。
比如这里:struct MM * p1 = gg->head;如果p1是被作为了头节点,删除的时候可能就会出错。
{
struct MM * p1 = gg->head;
for(int i = 0; i < 11 ; i ++)
{
struct MM * p2 = new struct MM;
p1->next = p2;
p2->next = NULL; //加这一句试试
p1 = p2;
}
}
p2->next = NULL; //加这一句试试,这样就可以了因为C++的编译器delete NULL不会出错,呵呵
否则同样会出错
再次谢谢各位,散分 。