您的位置:首页 > 其它

malloc ,calloc 和realloc的区别与联系

2016-07-16 23:28 267 查看
(1)malloc

当一个程序另外需要一些内存时,它就调用malloc函数,从内存池提取一块合适的内存,并返回指向该内存的指针。此时这块内存并没有以任何方式进行初始化。并且由于malloc并不知道需要返回一个什么类型的指针,所以提供了一个可以强转为其他类型的void*类型的指针。如果操作系统无法向malloc提供更多的内存,就返回空指针。所以说每次我们malloc一个空间都应该检查一下返回值。确保它是非NULL的这非常重要。

(2)calloc

calloc也用于内存的分配,和malloc比起来只不过是:

1.calloc将该空间初始化为0(有时候可能会浪费时间)

2.请求内存数量的方式不同。calloc包括所需元素的数量和元素的字节数

(3)realloc

realloc用于修改一块原先已经分配好的内存大小。可以用来扩大或者缩小一块内存。

1.若为增大则原内容保留,新增的内存块添加到原先内存块的后面。

2若为缩小则该内存块后面多余的部分能够将被拿掉。剩余部分仍然保留不变。

 如果原内存块无法改变大小,realloc将重新分配一块正确的内存,并把原先那块内存的内容复制到新的块上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  malloc realloc calloc