当前位置:嗨网首页>书籍在线阅读

19-calloc()函数

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

12.4.2  calloc() 函数

分配内存还可以使用 calloc() ,典型的用法如下:

long * newmem;
newmem = (long *)calloc(100, sizeof (long));

malloc() 类似,在ANSI之前, calloc() 也返回指向 char 的指针;在ANSI之后,返回指向 void 的指针。如果要存储不同的类型,应使用强制类型转换运算符。 calloc() 函数接受两个无符号整数作为参数(ANSI规定是 size_t 类型)。第1个参数是所需的存储单元数量,第2个参数是存储单元的大小(以字节为单位)。在该例中, long 为4字节,所以,前面的代码创建了100个4字节的存储单元,总共400字节。

sizeof(long) 而不是 4 ,提高了代码的可移植性。这样,在其他 long 不是4字节的系统中也能正常工作。

calloc() 函数还有一个特性:它把块中的所有位都设置为 0 (注意,在某些硬件系统中,不是把所有位都设置为 0 来表示浮点值 0 )。

free() 函数也可用于释放 calloc() 分配的内存。

动态内存分配是许多高级程序设计技巧的关键。我们将在第17章中详细讲解。有些编译器可能还提供其他内存管理函数,有些可以移植,有些不可以。读者可以抽时间看一下。