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

功能上的区别:

(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()。



    IT从业人员需要及时关注技术动态,但是互联网的内容却过于离散,好东西往往隐藏得很深。 现在可以在微信公众号里面
    搜索关注 “小鱼儿的IT技术分享” ,订阅我为大家每天汇总的IT技术信息。欢迎大家关注!
      有兴趣的请点击《与IT技术相关的微信公众号》


你可能感兴趣的:(C语言,malloc,realloc,alloca,calloc)