为什么释放单链表的释放那段程序,加上程序运行到最后就停止工作?

2016年5月 总版技术专家分月排行榜第二
2016年10月优秀大版主2016年8月论坛优秀大版主
2016年5月 总版技术专家分月排行榜第二
2016年10月优秀大版主2016年8月论坛优秀大版主
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 1448 人关注过本帖
标题:双向循环链表程序运行弹出了name.exe已停止工作对话框,然后下面有调试停止 ...
等 级:黑侠
帖 子:280
专家分:689
结帖率:100%
&&已结贴√
&&问题点数:20&&回复次数:6&&&
双向循环链表程序运行弹出了name.exe已停止工作对话框,然后下面有调试停止这些选项
程序如下:
才刚写了一个创建的函数,用P指针开拓节点,q记录最后开拓的节点,head是头结点
#include&stdio.h&
#include&stdlib.h&
#include&malloc.h&
static int n=0;
struct node
&&& struct node *
&&& struct node *
struct node *creat()
{&&& struct node *
&&& struct node *p,*q;
&&& head=NULL;
&&& p=q=(struct node *)malloc(sizeof(struct node));
&&& printf(&第%d个学生信息:\n&,++n);
&&& printf(&学号:&);
&&& scanf(&%d&,&p-&num);
&&& while(p-&num != 0)
&&&&&&&&printf(&成绩:&);
&&&&&&&&scanf(&%d&,&p-&score);
&&&&&&&&if(head=NULL)
&&&&&&&&&&&&head=p;
&&&&&&&&if(head!=NULL)
&&&&&&&&&&&&q-&next=p;
&&&&&&&&&&&&p-&prior=q;
&&&&&&&&&&&&q=p;
&&&&&&&&p=(struct node*)malloc(sizeof(struct node));
&&&&&&&&printf(&第%d个学生信息:\n&,++n);
&&&&&&&&printf(&学号:&);
&&&&&&&&scanf(&%d&,&p-&num);
&&& q-&next=
&&& head-&prior=q;
&&& free(p);
&&& printf(&创建成功\n&);
&&& return(head);
void main()
搜索更多相关主题的帖子:
等 级:黑侠
帖 子:280
专家分:689
大神帮忙看看呗,编译链接都是没错的
等 级:黑侠
帖 子:280
专家分:689
再补充一下就是输入的节点num为0表示创建结束,而我的这个程序也是在输入num为0的时候弹出程序停止运行的
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2389
专家分:13384
&&得分:20&
我谈谈我的看法,因为我也是刚学习数据结构:
1、if(head=NULL)你这个应该是比较,不是赋值吧!应该是if(head==NULL);
2、q-&next=我觉得你应该先开辟大小,然后才能进行赋值处理。
3、 p=(struct node*)malloc(sizeof(struct node));你的创建后,最好检验一下是否开辟内存空间成功。assert(p!=NULL);
我给你修改的如下:
#include&stdio.h&
&#include&stdlib.h&
&#include&malloc.h&
&static int n=0;
&struct node
&&&&&struct node *
&&&&&struct node *
&struct node *creat()
&{&&& struct node *
&&&&&struct node *p,*q;
&&&&&head=NULL;
&&&&&p=q=(struct node *)malloc(sizeof(struct node));&&&&&& //先开辟空间
&&& if(p==NULL)printf(&内存开辟失败&);
&&&&&printf(&第%d个学生信息:\n&,++n);
&&&&&printf(&学号:&);
&&&&&scanf(&%d&,&p-&num);
&&&&&while(p-&num != 0)
&&&&&&&&&p=(struct node*)malloc(sizeof(struct node));
&&&&&&&&&printf(&成绩:&);
&&&&&&&&&scanf(&%d&,&p-&score);
&&&&&&&&&if(head==NULL)
&&&&&&&&&&&& head=p;
&&&&&&&&&if(head!=NULL)
&&&&&&&&&{
&&&&&&&&&&&& q-&next=p;
&&&&&&&&&&&& p-&prior=q;
&&&&&&&&&&&& q=p;
&&&&&&&&&}
&&&&&&&&&printf(&第%d个学生信息:\n&,++n);
&&&&&&&&&printf(&学号:&);
&&&&&&&&&scanf(&%d&,&p-&num);
&&&&&q=(struct node*)malloc(sizeof(struct node));&&&&&& //开辟空间
if(q==NULL)printf(&内存开辟失败&);
&&&&&q-&next=
&&&&&head-&prior=q;
&&&&&free(p);
&&& printf(&创建成功\n&);
&&&&&return(head);
&void main()
[ 本帖最后由 邓士林 于
17:14 编辑 ]
等 级:黑侠
帖 子:280
专家分:689
回复 4楼 邓士林
回答的太好了,我也是刚发现判断写成赋值了,囧!
至于第二第三个问题,我还得思考一下,呵呵
等 级:黑侠
帖 子:280
专家分:689
回复 4楼 邓士林
第二个问题不是的,前面已经定义过q了,并且用q记录了最近一个成功开辟的节点
第三个我在网上也看到别人程序有写这句判断的,刚懒得写了,,,以后要养成好习惯
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2389
专家分:13384
回复 6楼 书生等待
问题要好好思考,这样才能进步。加油。我也是菜鸟
版权所有,并保留所有权利。
Powered by , Processed in 0.050779 second(s), 9 queries.
Copyright&, BCCN.NET, All Rights Reserved07:55 提问
【C语言】vc6.0运行程序过程中提示***.EXE已停止工作
在运行“添加”这一块时,输入完信息之后就提示***.EXE已停止工作,这是什么错?
#define LENTEL sizeof(tel)
#define ID struct tel
struct tel
char name[15];
char tele[15];
char style[15];
char mail[20];
ID *id = NULL;
/*读取telephone.txt文件中的内容创建学生链表*/
ID* create()
ID *p1,*p2;
p2 = (ID)malloc(LENTEL);
head = p2;
if((fp = fopen("telephone.txt","r")) == NULL)
printf("联系人文件打开错误,请将telephone.txt放置与程序同一目录下!\n");
for(int i = 0; i&1;i++)
fscanf(fp,"%*[^\n]%*c");
while(!feof(fp))
p1 = (ID*)malloc(LENTEL);
fscanf(fp,"%s%s%s%s",p1-&name,p1-&tele,p1-&style,p1-&mail);
p1-&next = NULL;
p2-&next = p1;
fclose(fp);
ID* findbyname(char name[])
ID* temp = NULL;
while (p!=NULL)
if(strcmp(name,p-&name) == 0)
ID* findbytele(char tele[])
ID* temp = NULL;
while (p!=NULL)
if(strcmp(tele,p-&tele) == 0)
/*判断这个联系人是否存在*/
bool Istel(char name[])
ID *p = id-&
bool flag =
while (p != NULL)
if(strcmp(p-&name,name) == 0)
ID *newtel = NULL;
char tel_name[15];
char tel_tele[11];
char tel_style[15];
char tel_mail[20];
printf("\n------- 请输入学生基本信息 --------\n");
printf("姓名
printf("--------------------------------------\n");
scanf("%s%s%s%s",tel_name,tel_tele,tel_style,tel_mail);
if(!Istel(tel_name))
newtel = (ID*)malloc(LENTEL);
strcpy(newtel-&name,tel_name);
strcpy(newtel-&tele,tel_tele);
strcpy(newtel-&style,tel_style);
strcpy(newtel-&mail,tel_mail);
newtel-&next = NULL;
for(p=p-& p-&next!=NULL; p=p-&next);
printf("\n联系人已添加成功!\n");
printf("\n该联系人姓名已存在!\n");
void Print_Inquire_All()
void menu_print_out();
ID *p1 = id-&
menu_print_out();
while (p1!=NULL)
printf("%s\t%s\t%s\t%s\n",p1-&name,p1-&tele,p1-&style,p1-&mail);
system("pause");
void menu_print_out()
printf("\n---------------------------------\n");
printf("\n---------------------------------\n");
/*主菜单*/
void menu(void)
void ReadBack();
╭════════╮
printf("╭══════╣通讯管理系统V1.0╠══════╮\n");
printf("║
╰════════╯
printf("║
【1】添加数据
【3】退出系统
printf("║
printf("║
【2】查询数据
*************
printf("║
printf("╰══════════════════════╯\n");
printf("◎请输入功能前的序号进入相应的工具:【
int a = 0;
a = getchar();
while(a!='1'&&a!='2'&&a!='3')
printf("error! please input the right number!\n");
putchar('\a');
getchar();
printf("◎请重新输入功能前的序号进入相应的工具:【
a = getchar();
Print_Inquire_All();
ReadBack();
getchar();
/*退出程序时将数据写回telephone.txt进行更新*/
void ReadBack()
FILE *TEL = fopen("telephone.txt","w");
ID *te = id-&
fprintf(TEL,"Tname
while (te != NULL)
fprintf(TEL,"\n%s
%s",te-&name,te-&tele,te-&style,te-&mail);
fclose(TEL);
void Lunch()
if((fp=fopen("telephone.txt","r")) == NULL)
fp=fopen("telephone.txt","w+");
id = create();
void main()
SetConsoleTitle("C语言通讯录管理系统");
按赞数排序
第一,输入的字符串长度没有超过定义吧!其次,分配的指针在使用前要判断是否为空。最后,单步调试,、或增加打印看看具体是哪行出错了。
其他相似问题查看: 4609|回复: 11
ZP1.6为何脱壳修复后运行提示基础类应用程序 已停止工作?
阅读权限10
本帖最后由 暗里着迷 于
22:37 编辑
已经研究了1个星期的ZP1.6修复了,用ESP定律来到了OEP,修复是用论坛这里做的:
按照步骤修复一切正常,但是运行不起来(修复后的文件比原来未加壳的大),我是用LordPE进行转存的,到底出现了什么问题呢?是否还要用什么工具修复?请大牛们提示下我这个小白吧,感谢。
(295.88 KB, 下载次数: 6)
22:37 上传
(48.54 KB, 下载次数: 6)
22:34 上传
(149.39 KB, 下载次数: 5)
22:34 上传
(21.12 KB, 下载次数: 5)
22:34 上传
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限30
难道程序有暗装?
没有吧?IAT已经正确修复了。我怀疑要用Zpdump来转存的。&
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
本帖最后由 暗里着迷 于
23:02 编辑
会不会这个问题?那要用哪个版本的转存工具?
(98.88 KB, 下载次数: 4)
23:02 上传
不是这个问题。你的程序根本没输出表。要先分清输出表和导入表&
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
头像被屏蔽
提示: 作者被禁止或删除 内容自动屏蔽
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
Zpdump这个工具不知道有没有哪位大牛用过?有没有相关的视频?
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
代码被抽取了,要补哦
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限30
仍在OD里运行一下,看程序停在哪,就nop掉哪
OD,有没有关于这类的断点?&
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
嗯& &多半是在 wi 7&&上运行的吧?
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
暗里着迷 发表于
Zpdump这个工具不知道有没有哪位大牛用过?有没有相关的视频?
有& & 到赏金论坛 去找下
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
Zpdump这个工具主要是用于补区段&&脱壳
你好,请问你有相关的教程吗?Zpdump&
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.}

我要回帖

更多关于 释放单链表 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信