C语言的内存分配calloc()函数

C语言的内存分配除了用malloc()函数,还可以用calloc()函数,典型的用法如下:
long * newmem;
newmem = (long *)calloc(100,sizeof(long));
和malloc()类似,在ANSI之前,calloc()也返回指向char的指针;在ANSI之后,返回指向void的指针。如果要存储不同的类型,应私用强制类型转换运算符。calloc()函数接受两个无符号整数作为参数(ANSI规定是size_t类型)。 第一个参数是多续的存储单元的数量,第二个参数是存储单元的大小(以字节为单位)。在该例中,long为4个字节,所以前面的代码创建了100个4字节的存储单元,总共400个字节。
用sizeof(long)而不是4,提高了代码的可移植性。这样,在其他long不是4字节的系统也能正常工作。
calloc()函数还有一个特性:它把块中所有为都设置为0(注意,在某些硬件系统中,不是把所有为都设置为0来表示浮点数0)。
free()函数也可以用于释放calloc()分配的内存。
动态内存分配是许多高级程序设计技巧的关键。有些编译器还提供其他内存管理函数,有些可以移植,有些不可以,这需要注意。
参考资料:
史蒂芬・普拉达. C Primer Plus (第6版) 中文版[M]. 人民邮电出版社, 2016.
本文深入探讨C语言中calloc()函数的使用方法及其特性,包括如何创建指定数量和大小的存储单元,以及calloc()如何将内存初始化为零。同时介绍了calloc()与malloc()的区别,以及如何使用free()释放由calloc()分配的内存。
3823

被折叠的 条评论
为什么被折叠?



