存储器内存分配函数对比

对比AnsiC中三个用于存储器动态分配的函数

1、malloc:分配指定字节的存储区,存储区初始值不确定

#include <stdlib.h>
void *malloc(size_t size);
                    成功返回非空指针,失败返回空指针

2、calloc:为指定长度的对象,分配能够容纳其指定个数的存储空间,空间每一位都初始化为0.如下代码是分配nobj个大小为size的内存

#include <stdlib.h>
void *calloc(size_t nobj,size_t size);
                    成功返回非空指针,失败返回空指针

3 realloc:更改以前分配区的长度(可以增加或者减少),当增加长度的时候,可能会将以前分配的内容移动到另一个更大的区域,新增加的区域初始值不确定

#include <stdlib.h>
void *realloc(void *ptr,size_t newsize);
                    成功返回非空指针,失败返回空指针

若ptr是一个空指针,则realloc功能和malloc相同,用于分配指定长度newsize的存储区

4 alloca:调用时与malloc相同,但它是在当前函数的栈上分配存储空间,而不是在堆上。alloca的特点是当函数返回时,自动释放函数使用的帧栈,不用为释放空间而操心,但该函数的缺点是不适合于系统之间的移植

#include <stdlib.h>
void *allcoa(size_t size);
                    成功返回非空指针,失败返回空指针

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值