在软件开发中,常常需要动态地分配和撤销空间。在C语言中是利用库函数malloc和free分配和撤销内存空间的。
但是使用malloc函数时必须制定需要开辟的内存空间大小。
其调用形式为malloc(size)。size是字节数,需要人们事先求出或用sizeof运算符由系统求出。
此外,malloc函数只能从用户处知道应开辟空间的大小而不知道数据的类型,因此无法使其返回的指针指向具体的数据。
其返回值一律为 void * 类型,必须在程序中进行强制转化,才能使其返回的指针指向具体的数据。
int * array = (int * ) malloc(5 * sizeof(int));
C++提供了较为简便而功能强的运算符new和delete来取代malloc和free函数。
new
int * a = new int; // 开辟一个存放整数的空间,返回一个指向整型数据的指针
int * b = new int(100); // 开辟一个存放整数的空间,并指定该整数的初值为 100
int * array = new int[5]; // 开辟一个存放整数数组的空间,该数组有 5 个元素
delete
delete a; //撤销空间
delete c; //撤销空间
delete array; //撤销空间
参考书籍:
《C++面向对象程序设计 (第二版)》谭浩强