C++ new 学习笔记
在C++中使用new和delete来替换C中的malloc和free
new 实现一维指针:
1 int * P; 2 P = new int; //开辟一个存放整数的空间,并返回一个存储空间的地址(即指针); 3 * P = 5; 4 5 int * P = new int(5); //与上相等 6 int * Y = new int; 7 int * Y = new int(100); //开辟一个存放整数的空间,并指定该整数的初值为100,返回一个该存储空间的地址;
new 分配一个任意大小的数组:
1 Type * p = new Type[MaxSize]; 2 3 例如:分配一个大小为10的int类型的数组 4 5 int * p = new int[10];
释放new创建的 一维指针:
1 delete p ; 2 delete y ; 3 4 delete [] p;
注意:用new运算符动态分配的内存空间,要用delete运算符释放,否则,会出现“内存泄漏”;
new 实现二维指针:转~~
1 #include <iostream> 2 using namespace std; 3 4 void main() 5 { 6 //用new创建一个二维数组,有两种方法,是等价的 7 //一: 8 int (*p)[10] = new int[5][10]; 9 //二: 10 int **p = new int* [5]; 11 for(int i=0;i <5;i++) 12 p[i] = new int[10]; 13 14 //指针数组的创建,也有两种方法 15 //一: 16 char **pa = new char* [4]; 17 for (int i=0;i <4;i++) 18 { 19 pa[i] = new char[8]; //为每个指针都分配8个char元素空间。 20 } 21 //二: 22 char *pa[4];//可以不用new创建 23 for (int i=0;i <4;i++) 24 { 25 pa[i] = new char[8]; //为每个指针都分配8个char元素空间。 26 } 27 28 29 //delete二维数组 30 //for一: 31 delete []p; 32 //for二: 33 for(int i=0; i <5; ++i) 34 delete []p[i]; 35 delete []p; 36 37 //delete指针数组 38 //for一: 39 for(int i=0; i <4; ++i) 40 delete []pa[i]; 41 delete []pa; 42 //for二: 43 for(int i=0; i <4; ++i) 44 delete []pa[i]; 45 }
浙公网安备 33010602011771号