C语言中利用库函数malloc和free来分配和撤销空间的。C++中的new与delete是运算符,不是函数,所以执行效率更高。但C++中也是可以使用malloc和free的。但是一来不方便,二来显得很low,三来有的情况会出错,比如当类A或结构体A中存在string类型变量时,对malloc申请的指针内的string类变量无法赋值,所以对A类型的指针空间就不能使用malloc来申请。之前在网上看的解释是:malloc函数无法对string类变量进行操作,所以申请空间失败,是无法进行赋值的。但可以利用构造函数来进行初始化,结构体也可以有自己的构造函数。但这样就显得多此一举。毕竟,如果用new就不存在此种顾虑。
new运算符的例子:
new int; //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址。
new int(100); //开辟一个存储整数的存储空间,初始值为100,返回一个指向该存储空间的地址。
new char[10]; //开辟一个存放字符数组的空间,返回字符数组首元素的地址。
new int[5][4]; //开辟一个二维数组的空间,返回首元素的地址。
float *p=new float(3.1415); //开辟一个单精度的空间,初值为3.1415,将返回的空间地址赋予给p。
int *pia = new int[10]; // 每个元素都没有初