关于C语言的动态内存分配 malloc和free函数
代码如下,为什么程序加上free(p)就会报错?第一张是报错的截屏,第二张图是没加free(p);请问一下是程序写错了么,#include<stdio.h>#includ...
代码如下,为什么程序加上free(p)就会报错?
第一张是报错的截屏,第二张图是没加free(p);
请问一下是程序写错了么,
#include<stdio.h>
#include<malloc.h>
int main()
{
int *p=NULL;
int years=1994;
int days=365;
int flag=0;
int i=0;
int j=0;
if((0==years%400)||((0==years%4)&&(0!=years%100)))
{
p=(int*)malloc(366);
flag=1;
}
else
{
flag=0;
p=(int*)malloc(365);
}
p=p+31;
for(j=1;j<=29;j++)
{
*p=j;
printf("%-4d",*p);
p++;
if(0==j%4)
{
printf("\n");
}
}
free(p);
return 0;
}
***************************************************************** 展开
第一张是报错的截屏,第二张图是没加free(p);
请问一下是程序写错了么,
#include<stdio.h>
#include<malloc.h>
int main()
{
int *p=NULL;
int years=1994;
int days=365;
int flag=0;
int i=0;
int j=0;
if((0==years%400)||((0==years%4)&&(0!=years%100)))
{
p=(int*)malloc(366);
flag=1;
}
else
{
flag=0;
p=(int*)malloc(365);
}
p=p+31;
for(j=1;j<=29;j++)
{
*p=j;
printf("%-4d",*p);
p++;
if(0==j%4)
{
printf("\n");
}
}
free(p);
return 0;
}
***************************************************************** 展开
1个回答
展开全部
是这样的圆败,如果不释放,下次这段动态内存空间就无法再族历使用了,久而久兆腔搜之,容易造成内存泄露这样的问题
#include<stdio.h>
#include<malloc.h>
int main()
{
int *p=NULL;
int years=1994;
int days=365;
int flag=0;
int i=0;
int j=0;
if((0==years%400)||((0==years%4)&&(0!=years%100)))
{
p=(int*)malloc(366);
flag=1;
}
else
{
flag=0;
p=(int*)malloc(365);
}
p=p+31;
for(j=1;j<=29;j++)
{
*p=j;
printf("%-4d",*p);
p++;
if(0==j%4)
{
printf("\n");
}
}
free(p);
return 0;
}
希望能够帮助到你,望采纳!
#include<stdio.h>
#include<malloc.h>
int main()
{
int *p=NULL;
int years=1994;
int days=365;
int flag=0;
int i=0;
int j=0;
if((0==years%400)||((0==years%4)&&(0!=years%100)))
{
p=(int*)malloc(366);
flag=1;
}
else
{
flag=0;
p=(int*)malloc(365);
}
p=p+31;
for(j=1;j<=29;j++)
{
*p=j;
printf("%-4d",*p);
p++;
if(0==j%4)
{
printf("\n");
}
}
free(p);
return 0;
}
希望能够帮助到你,望采纳!
追问
我加上free(p)反而不正常了,这是为什么呢?
没有加上free就可以正常显示
追答
那就不加嘛
希望能够帮助到你,望采纳!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询