数组比链表更加适于快速排序、查找和数据访问。然而,数组通常是静态数据结构。通用程序库(stdlib.h)提供了另外两个函数来动态分配内存,这两个函数是calloc和realloc。这些函数可以用于创建和修改动态数组。数组指针可以像数组那样使用下标。所以,calloc所创建的连续内存空间的指针可以像数组那样处理。函数calloc动态为数组分配内存。
Calloc的原型是:
Void * calloc(size_t nmemb,size_t size);
函数有两个参数,即元素的个数和每个元素的大小,并将数组的元素初始化为0,函数返回值指向已分配内存的指针,或者,如果没有分配内存,则返回NULL指针。Malloc和calloc之间的主要差别在于,calloc清理它所分配的内存,而malloc不清理。
函数realloc修改前面对malloc、calloc或者realloc的调用而分配的对象大小。如果分配的内存大雨以前分配的数量,则不会修改原始对象的内容。否则,原对象中从起始位置到新对象大小的这一范围内的内容不会发生变化,realloc的原则是:
Void * realloc(void * ptr,size_t size);
函数realloc有两个参数,指向原始对象的指针和对象的新大小,如果ptr是NULL,则realloc的工作方式和malloc一样。如果size是0,而ptr不是MULL,则释放对象的内存,否则,如果ptr不是NULL,而大小大于0,则realloc试图为对象分配新的内存块,如不能分配新的空间,则ptr所指向对象将不会发生变化。函数realloc返回指向重新分配内存的指针,或者MULL指针。
来自里仁教育网:
http://www.lirenedu.org/index.php?ack=xinwen&id=1105