malloc是C运行库函数,该函数和free函数配对使用。函数malloc的原型如下:

void * malloc(size_t size);

使用malloc函数时,需要注意两点:

(1),malloc返回值的类型是void *,所以在调用malloc时要显示地进行类型转换,将void  *将void *的类型转换成所需要的指针类型。

(2),malloc 函数本身并不识别要申请的内存的是什么类型,它只关心内存的总字节数。所以在malloc的“( )”中使用sizeof运算符可以防止错误的发生。

例如:

int * p  = (int *)malloc(sizeof(int)*lenght);

函数free的原型如下:

void free( void *p);

free 函数的使用不像malloc函数那样复杂。

因为指针p 的类型以及它所指的内存在调用函数free之前都是知道的,所以语句free(p)能正确地释放内存。如果p 是NUUL指针,那么free对p无论操作多少次都不会出问题。如果p不是NULL指针,那么free对p连续操作两次就会导致程序运行错误。

  运算符new 和运算符delete配对使用。

由于运算符new内置了sizeof 、类型转换和类型安全检查功能,所以运算符new使用起来要比函数malloc简单的多,而且不易出错,写的程序更健壮。

比如下面的代码用运算符new申请一块长度为length的整数类型的内存:

int * p = new int[length];

函数delete释放内存的代码示例如下:

delete p;