急求大牛啊这个容易的链表到底在哪出错了
急求大牛啊,这个简单的链表到底在哪出错了
VC6.0编译完也输出了 但是怎么出现了一个框Debug Assertion Failed!然后程序停止工作了
求各位大牛给我解释下啊,小弟感激不尽啊,我无语啊,在这上边纠结几天了,看了好多链表
也没看出来,有的说是内存泄露,不明白啊 怎么解决,急啊啊啊啊!
------解决方案--------------------
问题出在这里啊
你都把这个指针所指向的内存释放了,下面怎么又使用了呢?
建议如下:
------解决方案--------------------
用debugger单步跟一跟。
------解决方案--------------------
1楼应该是对的,free后就释放掉了
------解决方案--------------------
楼主可以在第44行设置个断点,
看看程序走到这个断点后,为什么free的时候会出问题。
你这样第一次free估计没啥问题,第二次应该会有问题了
#include <stdio.h>
#include <stdlib.h>
struct list {
char str;
struct list * next;
};
int main()
{
struct list * head = NULL;
struct list * prev,* current;
char input;
while(scanf("%c",&input) && input != '#'){
current = (struct list *)malloc(sizeof(struct list));
if(head == NULL)
head = current;
else
prev->next = current;
current->next = NULL;
current->str= input;
prev = current;
}
if(head == NULL)
printf("NO DATA\n");
else
printf("the string:\n");
current = head;
while (current != NULL){
printf ("%c",current->str);
current = current->next;
}
current = head;
while (current != NULL){
free(current);
current = current->next;
}
printf("\n");
return 0;
}
VC6.0编译完也输出了 但是怎么出现了一个框Debug Assertion Failed!然后程序停止工作了
求各位大牛给我解释下啊,小弟感激不尽啊,我无语啊,在这上边纠结几天了,看了好多链表
也没看出来,有的说是内存泄露,不明白啊 怎么解决,急啊啊啊啊!
struct
list
------解决方案--------------------
问题出在这里啊
while (current != NULL){
free(current);
current = current->next;
}
你都把这个指针所指向的内存释放了,下面怎么又使用了呢?
建议如下:
while (current != NULL){
prev=current->next;
free(current);
current = prev;
------解决方案--------------------
用debugger单步跟一跟。
------解决方案--------------------
1楼应该是对的,free后就释放掉了
------解决方案--------------------
楼主可以在第44行设置个断点,
看看程序走到这个断点后,为什么free的时候会出问题。
你这样第一次free估计没啥问题,第二次应该会有问题了