malloc系列函数

malloc系列函数:

头文件<stdlib.h>

 

 void*calloc(size_t num,size_t size);

功能:num是请求分配的单元个数,size是每个单元的大小,如果成功则返回一个内存指针,指向一块内存,并且和malloc不同的是:这块内存已经被清零了!失败返回NULL。

例子:int *p=(int *)calloc(4,sizeof(int));

请求分配4个int大小的清零了的内存空间,相当于使用了

int *p=malloc(sizeof(int)*4);

memset(p,0,sizeof(int)*4);

 

void *malloc(size_t num);

功能:num是请求分配的内存字节数,成功则返回一个指向内存的指针,否则返回NULL。

例子:如上。

 

void *realloc(void *old, size_t new_size);

功能:old是原来分配的内存地址指针,new_size是请求分配的内存的新的大小,可以比原来小(但是对于数据来说不安全),也可以比原来的大。realloc会将原来内存中的内容复制到新的内存区域,然后返回新的内存指针,失败返回NULL。

例子:p=(int *)realloc(p,4*2); //将前面分配的内存扩大两倍

常用于动态队列,但是我在TC上使用时并不正确,我定义了一个队列,如下:

上面代码中的续行符有误,但是测试的时候,发现不能把我所有的点,也就是以前内存中存放的数据全部复制到新的内存中去,只有部分复制了,所以后来还是使用手动复制的,代码如下:

 

void *alloca(size_t size);

功能:size是请求分配的内存大小(字节),alloca函数和前面的函数都不同,前面的函数在进程的堆空间中分配内存,所以需要手动free,而alloca函数在进程的栈空间中分配内存,所以当调用alloca函数的函数执行结束时,alloca分配的内存也就自动释放。

注意:我在vc6.0上使用这个函数时,提示函数未定义!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值