首页 > 代码库 > malloc()和free()
malloc()和free()
为数组动态分配存储空间
#include <stdio.h>
#include <stdlib.h>int main(void)
{
double *ptd;
int max;
int number;
int i=0;
puts("What is the maximum number of type double entries?");
scanf("%d",&max);
ptd =(double *)malloc(max * sizeof (double));
if(ptd == NULL)
{
puts("Memory allocation failed.Goodbye.");
exit(EXIT_FAILURE);
}
puts("Enter the values(q to quit): ");
while(i<max && scanf("%1f",&ptd[i])==1)
i++;
printf("Here are your %d entries:\n.",number = i);
for(i=0;i<number;i++)
{
printf("%7.2f",ptd[i]);
if(i%7 == 6)
putchar(‘\n‘);
}
if(i%7 != 0)
{
putchar(‘\n‘);
}
puts("Done.");
free(ptd);
while(1);
return 0;
}
对应每一个malloc()调用,应该进行一次free()。函数free()的参数是先前malloc()返回的地址,它释放先前分配的内存。这样,所分配内存持续的时间是从调用malloc()分配内存开始,到调用内存给程序使用,每次调用free()分配释放内存一共再使用为止。
malloc()和free()
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。