malloc()与calloc()的辨析

malloc()与calloc()的相同点

两者都是常用的内存分配函数,用于动态分配内存

两者返回值类型都为void*,需要强制转换为所需类型

使用完分配的内存后,都需使用free()函数来释放该内存,防止内存泄漏

malloc()与calloc()的不同点 

malloc()函数:

函数原型为void* malloc(size_t size),接受一个参数size,表示要分配的字节数

malloc()函数不会对分配的内存进行初始化

calloc()函数:

函数原型为void* calloc(size_t num, size_t size),num为块数,size为每块的字节数

calloc()函数对分配的内存进行初始化,所有字节都设置为零

代码段

#include
#include

int main()
{
	// malloc()函数 
	int * ptr1 = (int *)malloc(10 * sizeof(int));
	for(int i=0; i<10; i++)
	  ptr1[i] = i;
	  
	for(int i=0; i<10; i++)
	  printf("%d ", ptr1[i]);
	puts("");
	free(ptr1); // 释放内存 
	  
	  
	// calloc()函数
	int * ptr2 = (int *)calloc(10, sizeof(int));
	for(int i=0; i<10; i++)
	  ptr2[i] = i + 100;
	  
	for(int i=0; i<10; i++)
	  printf("%d ", ptr2[i]);
	puts("");
	free(ptr2); // 释放内存 
	  
	  
	return 0;
}

你可能感兴趣的:(C语言,c语言,malloc,calloc)