以下代码均运行在x64环境中
calloc
void *calloc(size_t _NumOfElements, size_t _SizeOfElements)
上面是calloc函数的原型,其中(单位byte)
_NumOfElements 代表需要申请的内存空间长度
_SizeOfElements 代表长度中单个元素的大小
可能不是特别好理解这段话,下面可以通过一个简单实例来查看。
char *str = (char *)calloc(32, 1);
这条代码的意思是给字符变量str申请一个长度为32bytes的内存空间,其中元素长度为1byte。
怎么确定需要申请的长度,即calloc函数的两个参数值相乘。
malloc
void *__cdecl malloc(size_t _Size);
上面是malloc函数的原型,其中
_Size 代表需要申请的内存空间长度
以下是一个实例
char *str = (char *)malloc(32);
这条代码的意思是给字符变量str申请一个长度为32的内存空间。
区别
calloc函数申请的内存空间默认是格式化为\x00的;
malloc函数申请的内存空间没有格式化,需要使用memset函数将其格式化。