c语言内存函数malloc、calloc、realloc、alloca比较

原文链接:http://blog.csdn.net/fish43237/article/details/42632305

功能上的区别:

(1)malloc 

申请指定字节数的内存。申请到的内存中的初始值不确定。

(2)calloc

为指定长度的对象,分配能容纳其指定个数的内存申请到的内存的每一位(bit)都初始化为0

(3)realloc

 更改以前分配的内存长度(增加或减少)。当增加长度时,可能需将以前分配区的内容移到另一个足够大的区域,而新增区域内的初始值则不确定

(4)alloca

在栈上申请内存。


用法和注意

(1)malloc 

分配指定字节数的存储区。此存储区中的初始值不确定

(2)calloc

为指定长度的对象,分配能容纳其指定个数的存储空间。该空间中的每一位(bit)都初始化为0

(3)realloc

 更改以前分配区的长度(增加或减少)。当增加长度时,可能需将以前分配区的内容移到另一个足够大的区域,而新增区域内的初始值则不确定

(4)alloca

因为在栈上申请的内存,所以程序在出栈的时候,会自动释放内存。但是需要注意的是,alloca不具可移植性, 而且在没有传统堆栈的机器上很难实现。alloca不宜使用在必须广泛移植的程序中,。C99中支持变长数组(VLA), 可以用来替代alloca()。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值