1、new 一个对象:
1
class Solution{
public: 2 Solution(){ 3 4 } 5 6 Solution(int value){ 7 this->value = value; 8 } 9 }; 10 int main() 11 { 12 Solution * sol_ptr1; 13 Solution * sol_ptr2; 14 15 sol_ptr1 = new Solution(11); 16 sol_ptr2 = new Solution; 17 18 cout<<"sol_ptr1 "<<sol_ptr1->value<<endl; 19 cout<<"sol_ptr2 "<<sol_ptr2->value<<endl; 20 21 delete sol_ptr1; 22 delete sol_ptr2; 23 sol_ptr1 = nullptr; 24 cout<<sol_ptr1<<endl; 25 26 }
2、new 一个单变量:
int * ptr = new int(5) ; //括号表示,同时将整数赋值为5;
int * ptr = new int; //这样会产生一个随机值;
3、new 一个一维数组:
一维数组new的时候要指定数组大小,而且可以使用{}进行初始化;
二维数组的动态空间申请、释放比较麻烦。以后再讨论;
3、delete用法:
一般是 delete 指针变量名;
或者是 delete [] 指针变量名; //对数组空间的释放;
4、其他:
new内存分配失败时,会抛出bac_alloc异常,它不会返回NULL;malloc分配内存失败时返回NULL。
new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操作符。
相关链接:
c++中new与delete的用法总结:https://blog.csdn.net/zcawesome/article/details/78777832
C++中为二维数组开辟空间,并释放空间:https://blog.csdn.net/feilong1lantern/article/details/50278593