malloc()函数

malloc()函数,接受一个参数:所需内存字节数。该函数的功能是在程序运行时分配更多的内存。然后malloc()找到可用内存中一个大小合适的块。内存是匿名的;也就是说malloc()分配了内存,但没有为它指定名字。

然而,它却可以可以返回那块内存第一个字节的地址。因此,可以把那个地址赋值给一个指针,并使用该指针来访问那块内存。

函数malloc() 可用来返回数组指针、结构指针等等,因此一般需要把返回的类型指派为适当的类型。如果malloc()找不到所需的空间,它将返回空指针。

例如:

double  *p;

p=(double*)malloc(30*sizeof(double));

这段代码请求30个double类型值得空间,并且把p指向所需的空间所在位置。


一般地,对应每个malloc()调用,应该调用一次free()。函数free()的参数是先前malloc()返回的地址,它释放先前分配的内存。这样,所分内存的持续时间从调用malloc()分配内存开始,到调用free()函数释放内存以供再次使用为止。free()的参数应是一指针,指向有malloc()分配的内存块;不能使用free() 来释放通过其他方式分配的内存。

malloc()和free()的原型在头文件stdlib.h中。 

例如:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
   

   double *p;
   int max;
   int number;
   int i=0;
   puts("What is the maximum number of type double entries?");
   scanf("%d",&max);
   p=(double*)malloc(max*sizeof(double));

   if(p==NULL)

   {

     puts("Memory allocation failed.Goodbye!");
     exit(EXIT_FAILURE);
   }
   puts("Enter the values (q to quit):");
   while(i<max&&scanf("%lf",&p[i])==1)
      ++i;
   printf("Here are your %d entried:\n",number=i);
   for(i=0;i<number;i++)
   {
     printf("%7.2f",p[i]);
     if(i%7==6)
       putchar('\n');


   }
   if(i%7!=0)
     putchar('\n');
   puts("Done.");
   free(p);
   return 0;
}

运行示例,输入7个数,但程序只处理5个,因为我们将数字大小限定为5.

What is the maximum number of type double entries?
5
Enter the values (q to quit):
45 12 78 20 45 23 45
Here are your 5 entried:
  45.00  12.00  78.00  20.00  45.00
Done.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值