回 帖 发 新 帖 刷新版面

主题:[讨论]C语言程序错误

下面的程序是自己练习用的,用VC6.0编译无错误,运行时也能出现正确结果。就是同时也出现debug assertion failed.不知道是什么问题。。

#include <stdio.h>
#include <stdlib.h>

struct stu
{
 int num;
 char *name;
 char sex;
 float score;
} boy1;


 void main()
{
 struct stu *boy2;
 boy2=(struct stu*)malloc(sizeof(struct stu));
 boy1.num=102;
 boy1.name="Zhang ping";
 printf("input sex and score\n");
 scanf("%c,%f",&boy1.sex,&boy1.score);
 boy2=&boy1;
 printf("Number=%d\nName=%s\n",(*boy2).num,(*boy2).name);
 printf("Sex=%c\nScore=%f",(*boy2).sex,(*boy2).score);
 free(boy2);
}

回复列表 (共6个回复)

沙发

free(boy2);
应在:
 boy2=&boy1;
之前。。。

板凳

你要搞明白指针和指针指向的内存

3 楼

嗯,确实:)
还要记住:申请哪个空间就要记得释放哪个空间:)

4 楼

boy2=(struct stu*)malloc(sizeof(struct stu));
free(boy2);
在lz的程序中,这两行是多余的,去掉就不会有问题了

5 楼

知道源程序有缩进吗??你写的这玩艺你自己看着不累???

6 楼


嗯确实指针上有点迷糊

我来回复

您尚未登录,请登录后再回复。点此登录或注册