读书人

动态开辟结构体后内存释放有关问题

发布时间: 2013-07-25 16:22:17 作者: rapoo

动态开辟结构体后内存释放问题

#include <malloc.h>
#include <stdlib.h>
#include <stdio.h>
typedef struct shusu
{
int count;
int * value;
int sum;
} *Pshusu;
int main()
{
int i,j,k,l;
Pshusu s;
scanf("%d",&i);//结构体个数
s=(Pshusu)malloc(sizeof(struct shusu)*i);
for(j=0;j<i;j++)
{
scanf("%d",&s[j].count);//结构体中元素个数
l=s[j].count;
s[j].value=(int *)malloc(sizeof(int)*l);//动态开辟结构体数组空间
for(k=0;k<l;k++)
{
scanf("%d",&s[j].value[k]);//输入数组元素
}
}
for(j=0;j<i;j++)
{
for(k=0;k<s[j].count;k++)
printf("%d ",s[j].value[k]);
printf("\n");
}

return 0;
}
请问大侠我这里释放空间该怎么释放呢?是直接free(s)还是先把结构体内动态开辟的内存释放了再free(s)呢? 内存释放
[解决办法]
先free 里面的 int数组,然后在free外层结构体,记得顺序与malloc是相反的

读书人网 >C语言

热点推荐