加了这句执行程序时,出现 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时报错.
[解决办法]
free(q);
[解决办法]
本身就是创建链表,怎么函数里就接着毁了哦
[解决办法]
*q=malloc(sizeof(inlist));
int e=0;
p=l; --这里对吗??