c语言链表容易犯的错误,急求大牛啊这个容易的链表到底在哪出错了
急求大牛啊,这个简单的链表到底在哪出错了
#include
#include
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估计没啥问题,第二次应该会有问题了
c语言链表容易犯的错误,急求大牛啊这个容易的链表到底在哪出错了相关推荐
- C语言中常犯的错误(一)
程序出错有三大类:语法错误.逻辑错误和运行错误 对于语法错误,编译器会给出精确到行的提示:逻辑错误则需要在流程图的辅助下,重点关注留意花括号,进行判定:而运行错误则是指程序在接收到某些数据时因为处理不 ...
- C语言新手常犯的错误-截断
截断往往发生在复制过程中 准确地说,是将占用字节数较多的变量赋值给占用字节数较少的变量时,如j将long(16个字节)赋值给char(1个字节)时,这时候long类型的变量只将最低的一位赋给了char ...
- c语言中经常犯的错误
1.切忌将函数的参数作为数组定义时的长度 例如 f(int x){ a[x]; }
- C语言实现数据文件怎么找,急求如何将下列C语言程序数据存储到文件中?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...
- c语言保存文件格式如何改回来,急求如何将下列C语言程序数据存储到文件中?...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...
- 用c语言复制字符串的元音字母,急求:编写程序,将一个字符串中的元音字母复制到另一个字符串,然后输出。...
#include #include void str(char a[100],char b[100]) { int i=0, j=0; while(a[i]!='\0')//'\0'代表ASCLL码0 ...
- c语言中文件如何插入数据,急求如何将下列C语言程序数据存储到文件中?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...
- c语言源程序文件.c如何保存,急求如何将下列C语言程序数据存储到文件中?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...
- c语言数学语文英语成绩编程,急求一编程题!…
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include "stdlib.h" int i,j; struct STUDENT { int xuehao; ...
最新文章
- python画图程序有图-python画图程序
- keras从入门到放弃(九) 处理过拟合
- React性能优化 PureComponent
- win10 平台VS2019最简安装实现C++/C开发
- jq之省市区级联插件
- (12)Node.js核心模块fs—实现文件复制和压缩
- 新人起步,扬帆起航!
- Exchange 2010 无法删除第一个mailbox
- linux dstat io,linux dstat工具
- VC编程中,判断野指针
- python之os模块详解
- Java多线程(7):JUC(下)
- 好用过头的LeetCode刷题模板分享!(已拿亚麻offer)
- JAVA定义矩形类 方法一
- P2882 [USACO07MAR]Face The Right Way G 【贪心 + 差分】
- 联想开机启动项按哪个_联想台式电脑设置第一启动的快捷键是什么
- LJX的校园:体育课
- GEWV2.3L22A-SLIC烧坏问题经验案例
- 程序员个性化简历模板项目
- opencv python考勤_Python+Opencv+Tkinter指纹识别与人脸识别的门禁兼考勤(二)
热门文章
- NetBeans 时事通讯(刊号 # 146 - May 13, 2011)
- linux下备份mssql文件,linux服务器怎么定时备份mysql的sql文件数据
- golang微服务框架对比_微服务里程碑,Golang与Spring Cloud Alibaba完美结合
- linux 脚本设置时间戳,修改linux系统时间的方法(date命令)
- oracle10默认备份路径,oracle 10g RMAN备份及恢复
- oracle rman imp exp,Oracle-client支持exp|imp|rman
- 全局变量中断原子操作_原子操作原理分析
- 智能车竞赛线上培训:基于英飞凌AURIX的BLDC控制方案
- 第十七届智能车竞赛LOGO设计
- 两款带有WiFI的MicroPython模块:ESP32,ESP8266