一、malloc回忆
我在上节中讲了malloc,其作用为在堆区开辟一块内存;开辟内存的单位为字节,返回开辟内存的起始位置。其函数原型为:void* malloc(size_t byte)。
同时我们也知道在堆区开辟一个内存空间,只要这个程序不结束这个空间会一直存在(很多人想怎么可能程序不结束,别忘了很多程序都是7乘24小时不间断运行),所以我们需要在使用完后用free释放掉内存空间,并且把开辟内存的起始位置指针置为NULL。
二、calloc讲解
1、区别
除了malloc在堆区申请动态内存外,calloc也行,但是他们两个稍有区别,我们从calloc的函数原型入手--> void* calloc( size_t num , size_t size ) 。同时calloc在堆区开辟内存后会把内存字节都置为0。因此我们可以分析出有以下两个区别。
-
函数原型中参数不同: calloc原型函数中含有需指明含有多少个元素(size_t num),每个元素的大小(size_t size);而malloc仅仅只需要说明其开辟多少个字节(byte)即可。
-
内存空间是否会初始化:calloc 在堆