malloc(),calloc(),realloc()使用的一点经验

转载:http://hi.baidu.com/xl3391/blog/item/867b183d7180942d5bb5f5e8.html


malloc 函数指向一个大小为size的空间,如果错误发生返回NULL。 存储空间的指针必须为堆,不能是栈。

这样以便以后用free函数释放空间,calloc函数返回一个指向num数组空间,每一数组元素的大小为size

如果错误发生返回NULL。

#include <stdlib.h>

void *calloc( size_t num, size_t size );

三个函数都返回void类型指针。如果函数返回void ,它会返回任何值,但是当他返回void*时,它返回一个

通用的指针。用于指向任何数据类型。许多编译器都会给出警告。如果void指针被赋予了一个类型指针,如

int*。可以通过下面的方法让程序在编译器之间更具有移植性。即把他们的返回值强制转换成存储地址内变量

的类型。例如下面的某段程序:

#include<stdio.h>
#include<stdlib.h>
int main()
{
int *intpointer=NULL;
//double *doublepoint=NULL;
intpointer=malloc(sizeof(int));
*intpointer=50;
printf("the memory location %p contains %d\n,",intpointer,*intpointer);
return 1;
}

编译时会报错:

error C2440: '=' : cannot convert from 'void *' to 'int *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
Error executing cl.exe.

将第七行稍微改一下:intpointer=(int *)malloc(sizeof(int));

即可编译成功。另外用这些函数申请的内存空间用完后一定记得释放其占用的空间,否则会造成内存泄露,

是个很严重的错误。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值