转载:http://hi.baidu.com/xl3391/blog/item/867b183d7180942d5bb5f5e8.html
malloc 函数指向一个大小为size的空间,如果错误发生返回NULL。 存储空间的指针必须为堆,不能是栈。 这样以便以后用free函数释放空间,calloc函数返回一个指向num 数组空间,每一数组元素的大小为size。 如果错误发生返回NULL。 #include <stdlib.h> void *calloc( size_t num, 三个函数都返回void类型指针。如果函数返回void ,它会返回任何值,但是当他返回void*时,它返回一个 通用的指针。用于指向任何数据类型。许多编译器都会给出警告。如果void指针被赋予了一个类型指针,如 int*。可以通过下面的方法让程序在编译器之间更具有移植性。即把他们的返回值强制转换成存储地址内变量 的类型。例如下面的某段程序: #include<stdio.h> 编译时会报错: error C2440: '=' : cannot convert from 'void *' to 'int *' 将第七行稍微改一下:intpointer=(int *)malloc(sizeof(int)); 即可编译成功。另外用这些函数申请的内存空间用完后一定记得释放其占用的空间,否则会造成内存泄露, 是个很严重的错误。 |