(1)malloc
当一个程序另外需要一些内存时,它就调用malloc函数,从内存池提取一块合适的内存,并返回指向该内存的指针。此时这块内存并没有以任何方式进行初始化。并且由于malloc并不知道需要返回一个什么类型的指针,所以提供了一个可以强转为其他类型的void*类型的指针。如果操作系统无法向malloc提供更多的内存,就返回空指针。所以说每次我们malloc一个空间都应该检查一下返回值。确保它是非NULL的这非常重要。
(2)calloc
calloc也用于内存的分配,和malloc比起来只不过是:
1.calloc将该空间初始化为0(有时候可能会浪费时间)
2.请求内存数量的方式不同。calloc包括所需元素的数量和元素的字节数
(3)realloc
realloc用于修改一块原先已经分配好的内存大小。可以用来扩大或者缩小一块内存。
1.若为增大则原内容保留,新增的内存块添加到原先内存块的后面。
2若为缩小则该内存块后面多余的部分能够将被拿掉。剩余部分仍然保留不变。
如果原内存块无法改变大小,realloc将重新分配一块正确的内存,并把原先那块内存的内容复制到新的块上。