首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

【大神·】c语言 数据结构 链表 Access Violation有关问题

2013-12-10 
【求助大神·在线等】c语言 数据结构 链表 Access Violation问题本帖最后由 u013095718 于 2013-12-09 20:22:

【求助大神·在线等】c语言 数据结构 链表 Access Violation问题
本帖最后由 u013095718 于 2013-12-09 20:22:18 编辑 #include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct subjects
{
char name[20];
float score;
}sub;

typedef struct student
{
int num;
char name[20];
sub  subject[3];
struct student* next;
}stu,*pstu;

#define SIZE sizeof(stu)

//函数申明
void PrintMenu();
pstu AddStu(pstu );
pstu DeleStu(pstu );
pstu RwrStu(pstu );
void FindStu(pstu , char );
void Count(pstu ,char * ,float ,float );
pstu Rank(pstu ,char *,int );
void SaveQuit(pstu );


int main()
{
char filename[] = "D:\\编程学习\\编程实践\\c语言课程设计1 学生信息管理\\data.txt"; 
        FILE *fp; 
        char StrLine[50];             
char *p[9];                  
char n,j;
char *str,*psubname,subname[20];
pstu head,ptr;
float score1,score2;
int LenLink=0;

//创建带表头结点的空单链表head,用来存放载入信息
head = (pstu)malloc(SIZE);
ptr = head;
ptr->next = NULL;


以上是源文件的部分,定义了很多变量是程序接下来用的,但是到了申请内存空间那句就运行错误了,编译链接都没错,单步调试到 head = (pstu)malloc(SIZE)这里显示Access violation,无法运行。

很奇怪,我把链表的建立提出来单独实验发现有没有问题,就是下面这样,就没问题,但是上面的程序却是在这一部分出错,费解!

各位大神,帮帮忙吧,新人,分不多。

typedef struct subjects
{
char name[20];
float score;
}sub;

typedef struct student
{
int num;
char name[20];
sub  subject[3];
struct student* next;
}stu,*pstu;

#define SIZE sizeof(stu)

int main()
{
        pstu head,ptr;

        //创建带表头结点的空单链表head,用来存放载入信息
head = (pstu)malloc(SIZE);
ptr = head;
ptr->next = NULL;

        free(head);
}
[解决办法]

引用:
Quote: 引用:

第二段既然没有问题,你就逐步向第一段还原,看是哪一句导致的,再分析下

已经看了,第二段单独使用没问题,放到第一段里就出现问题了;
问题是那一句:head = (pstu)malloc(SIZE);

给你的第一段代码直接加了一个return,在linux环境下执行没有问题

热点排行