本文主要是介绍C语言——malloc() 函数与 calloc() 函数有什么区别?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、问题
malloc() 数与 caloc() 函数都是⽤来开辟内存空间的,那么它们有什么区别呢?
二、解答
malloc() 函数包含在 stdlib.h 头⽂件中,作⽤是在内存中动态地分配⼀块内存。因为 malloc()函数分配的内存空间是在堆中,⽽不是在栈中,所以在使⽤完这块内存后⼀定要使⽤ free() 函数将其释放掉。
calloc() 函数也包含在 stdlib.h 头⽂件中,使⽤该函数分配⼀个整型数组内存空间,代码如下:
int *p;
p = (int *)calloc(2,sizeof(int));
在上⾯的代码中,p 为⼀个整型指针,使⽤ calloc() 函数分配内存数组,第⼀个参数表示分配数组中元素的个数,⽽第⼆个参数表⽰元素的类型,最后将返回的指针赋给 p 指针变量,p 的指针就是该数组的⾸地址。
这两个函数的区别之⼀就是参数上的区别,malloc() 分配⼀块 size ⼤⼩的内存,⽽ calloc() 分配⼀个 n*size ⼤⼩的内存块;区别之⼆就是返回内存块的状态不同,malloc() 分配的内存块没有被清零,⽽ calloc() 分配的内存块是清了零的。
三、总结
虽然这两个函数的⽬的是相同的,都是开辟⼀块内存空间,但是仍然各有⼲秋,各不相同。在使⽤的时候,要根据程序员⾃⼰的需要,选择开辟内存空间的函数。
这篇关于C语言——malloc() 函数与 calloc() 函数有什么区别?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!