介绍释放内存操作符删除
分配和释放动态数组
动态创建多维数组
今天就跟大家聊聊有关如何在c++中分配动态内存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
动态申请内存操作符,新
- <李>
new 类型名T(初始化参数列表)
李> <李>功能:在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值。
李> <李>结果值:成功:T类型的指针,指向新分配的内存;失败:抛出异常。
李>释放内存操作符删除
- <李>
delete 指针p
李> <李>功能:释放指针p所指向的内每分钟存必须是新操作的返回值。
李>//1例,动态创建对象举例 # include & lt; iostream> using namespace 性传播疾病; class Point  { 公众: 点(),:,x (0), y (0), { cout<& lt;“Default Constructor 叫干净& lt; & lt; endl; } 点(int x,, int y),:, x (x), y (y), { cout<& lt;,“Constructor 叫做!”& lt; & lt; endl; } ~点(),{,cout<& lt;“Destructor 叫做!”& lt; & lt; endl;,} int getX (), const {, return , x,,} int getY (), const {, return , y,,} void 移动(int newX, int newY), { 时间=x newX; 时间=y newY; } 私人: int , x,, y; }; int main (), { cout & lt; & lt;,“Step ,:,“, & lt; & lt;, endl; Point * ptr1 =, new 点,,//调用默认构造函数 delete ptr1,//删除对象,自动调用析构函数 cout & lt; & lt;,“Step 二:,“,& lt; & lt;, endl; 时间=ptr1 new 点(1、2); delete ptr1; return 0; }
运行结果: Step 一个: Default Constructor 调用。 Destructor 调用。 Step 二: Constructor 调用。 Destructor 调用。
分配和释放动态数组
- <李>
分配:new 类型名T [,数组长度,)
李>数组长度可以是任何表达式,在运行时计算
- <李>
释放:删除[],数组名p
李>释放指针p所指向的数组。
p必须是用新分配得到的数组首地址。
//2例,动态创建对象数组举例 # includeusing namespace 性传播疾病; {class Point //类的声明同例-,略,}; int main (), { Point * ptr =, new 点[2];,//创建对象数组 ptr [0] .move(5, 10);,//通过指针访问数组元素的成员 ptr [1] .move(15日,20);,//通过指针访问数组元素的成员 cout & lt; & lt;,“删除…“,& lt; & lt;, endl; 删除[],ptr,,//删除整个对象数组 return 0; }
运行结果: Default Constructor 调用。 Default Constructor 调用。 删除…… Destructor 调用。 Destructor 。
动态创建多维数组
new 类型名T[第1维长度][第2维长度]…;
如果内存申请成功,新运算返回一个指向新分配内存首地址的指针。
例如:
char (* fp) [3],
fp=new char [2] [3],
//3例,动态创建多维数组 # include & lt; iostream> using namespace 性传播疾病; int main (), { int (cp) [9] [8],=, new int [7] [9] [8]; for (int 小姐:=,0;,小姐:& lt;, 7;,我+ +) 时间=for (int j 0;, j & lt;, 9;, j + +) 时间=for (int k 0;, k & lt;, 8;, k + +) * (* (* (+ cp i), +, j), +, k),=(100,小姐:*,+,j *, 10, +, k); for (int 小姐:=,0;,小姐:& lt;, 7;,我+ +),{ 时间=for (int j 0;, j & lt;, 9;, j + +), { 时间=for (int k 0;, k & lt;, 8;, k + +) cout & lt; & lt;, cp[我][j] [k], & lt; & lt;,,,,, cout & lt; & lt;, endl; } cout & lt; & lt;, endl; } 删除[],cp; return 0; }如何在c++中分配动态内存