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 }

 

 

 

 

 

posted on 2021-10-26 18:59  CharonVan  阅读(74)  评论(0)    收藏  举报