C语言的内存申请问题
C语言的内存申请问题我写了一个内存申请的函数,但是总是申请失败,请问是哪里出问题了?以下是我定义的全局变量intstusize=1000;下是我定义的结构体typedef...
C语言的内存申请问题我写了一个内存申请的函数,但是总是申请失败,请问是哪里出问题了?
以下是我定义的全局变量
int stusize=1000;
下是我定义的结构体
typedef struct //学生信息结构体
{
char num[13]; //学号
char name[20]; //姓名
char major[20]; //专业
char classnum[10]; //班级
char mobile[20]; //手机
int age; //年龄
}Student[1000],stu;
以下是我的内存申请函数
Status Sturea(Student S,int i)//申请i个学生空间
{
stu* ss;
ss=S;
ss=(stu*)realloc(S,(stusize+i)*sizeof(stu));
if(!ss)
{printf("realloc failed\n");return ERROR;}
else
{printf("realloc succeed\n");return YES;}
} 展开
以下是我定义的全局变量
int stusize=1000;
下是我定义的结构体
typedef struct //学生信息结构体
{
char num[13]; //学号
char name[20]; //姓名
char major[20]; //专业
char classnum[10]; //班级
char mobile[20]; //手机
int age; //年龄
}Student[1000],stu;
以下是我的内存申请函数
Status Sturea(Student S,int i)//申请i个学生空间
{
stu* ss;
ss=S;
ss=(stu*)realloc(S,(stusize+i)*sizeof(stu));
if(!ss)
{printf("realloc failed\n");return ERROR;}
else
{printf("realloc succeed\n");return YES;}
} 展开
2个回答
展开全部
realloc(void *__ptr, size_t __size):更改已经配置的内存空间,即更改由malloc()函数分配的内存空间的大小。
所以你应该用 malloc()
#include<stdio.h>
#include<malloc.h>
#include<string.h>
//以下是我定义的全局变量
int stusize=1000;
//下是我定义的结构体
typedef struct //学生信息结构体
{
char num[13]; //学号
char name[20]; //姓名
char major[20]; //专业
char classnum[10]; //班级
char mobile[20]; //手机
int age; //年龄
}Student[1000],stu;
int main()
{
stu* ss;
ss=(stu *)malloc(sizeof(stu));
if(ss!=NULL)
{
printf("申请成功\n");
strcpy(ss->name,"小明");
printf("录入学生姓名:%s",ss->name);
}
else
{
printf("申请失败");
}
return 0;
}
展开全部
realloc是需要传入一个之前malloc的指针.
你传入的是一个结构体, 参数不对 自然会分配错误.
看你的写法, Student S这个应该是一个数组指针. 对于这种 无法动态修改大小.
只能 stu *s=(stu*)malloc(sizeof(stu)*stusize);
然后把这个s作为参数传给sturea.
即
Status Sturea(stu *S,int i)//申请i个学生空间
{
stu* ss;
ss=S;
ss=(stu*)realloc(S,(stusize+i)*sizeof(stu));
if(!ss)
{printf("realloc failed\n");return ERROR;}
else
{printf("realloc succeed\n");return YES;}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询