功能上的区别:
(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技术相关的微信公众号》