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; ...
最新文章
- 由于Coinbase插件,BCH被5000万商家接受
- CTO:再写if-else,逮着一个罚款1000!
- js保持div悬浮,不随页面向下滚动而被覆盖
- 为女儿示范的两张石膏像素描
- 简易贪吃蛇小游戏java版_用GUI实现java版贪吃蛇小游戏
- 分布式系统的那些事儿(六) - SOA架构体系
- 唐人街神探:用数学方法确定罪犯位置
- dos系统重启计算机名,dos系统重启的命令是是
- NOIP2014 uoj20解方程 数论(同余)
- WebSocket使用javax.websocket.RemoteEndpoint.Basic.sendObject(Object arg0)向页面方法发送对象
- 20190906:(leetcode习题)Shuffle an Array
- 时间序列分析ARMA模型-学习笔记
- Unity 实现部分模型流光效果
- idea修改主题和更换背景
- HTML图片鼠标滑动加边框,鼠标移动到图片上时,用css怎么实现图片加边框效果?...
- bat一键清理系统垃圾/系统日志
- 公司股权等比稀释是什么意思
- UNIX再学习 -- ps、top、kill 指令
- Flutter 必须知道的布局规则
- 使用3DLiDAR传感器进行基于同心区域的区域地面分割和地面似然估计
热门文章
- 【Android开发】范例2-实现简易绘图板
- tomcat修改默认web目录
- 几个常用的流量统计工具比较
- android 网络调试 源代码,一个步骤教你调试Android系统源代码
- 2017电大c语言形考册,(2017年电大)中央广播电视大学c语言程序设计形成性考核册及答案.doc...
- mysql yearweek 日期不准_Mysql 中,WEEK 与YEARWEEK函数的参数问题
- 查询时间范围_MySQL慢查询(中):正确处理姿势,你get到了吗?
- 每个java程序都至少有一个线程给主线程,java程序在主线程中判断各个子线程状态的操作,该如何解决...
- 台式电脑计算机无法启动 启动修复,Win10启动修复无法修复你的电脑解决方法
- mysql 导入一个数据库_mysql导入一个数据库