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;}
}
展开
 我来答
自我编程
2018-01-02 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

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;
}
风若远去何人留
2018-01-02 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部

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;}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式