如何在c++中分配动态内存

  介绍

今天就跟大家聊聊有关如何在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例,动态创建对象数组举例      # include      using  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],

如何在c++中分配动态内存

//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++中分配动态内存