首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

加了这句执行程序时,出现 Debug Assertion Failed。没这句时候就可以执行解决办法

2012-03-28 
加了这句执行程序时,出现 Debug Assertion Failed。没这句时候就可以执行inlist *creatlist(inlist *l){inl

加了这句执行程序时,出现 Debug Assertion Failed。没这句时候就可以执行
inlist *creatlist(inlist *l)
{
inlist *p=malloc(sizeof(inlist)),
*q=malloc(sizeof(inlist));
int e=0;
p=l;
while(e!=-1)
{
p->next=q;
p=p->next;
scanf("%d",&e);
p->data=e;
   
}
p->next=NULL;
free(p);
free(q); //加了这句执行程序时,出现 Debug Assertion Failed。没这句时候就可以执行了,为什么(同样 是free)
return l;
}

[解决办法]
将q free后那么你后面在使用这个链表方面肯定要出问题了。
[解决办法]
p->next=q;
p=p->next;
这样操作后,p, q指向同一内存空间。
p原先指向的内存无指针指向.
因此
free(p);
free(q); 
只是试图释放同一堆内存两次,第二次free时报错.
[解决办法]

C/C++ code
free(q);
[解决办法]
本身就是创建链表,怎么函数里就接着毁了哦
[解决办法]
*q=malloc(sizeof(inlist));
int e=0;
p=l; --这里对吗??

热点排行