C++中的new运算符:动态内存分配

时间:2020-02-23 14:30:01  来源:igfitidea点击:

在本文的C++编程系列中,我们讨论C++中的新运算符。

在C++中使用new运算符

new操作符允许我们请求在Heap结构上分配内存空间。
通过使用C++ new运算符,我们可以在运行时(即过程中的动态时间)请求另外的内存。

如果请求的内存量在堆结构上可用,则新运算符将执行以下操作

  • 新的运算符初始化堆上请求的内存空间量

  • 此外,它将分配的(初始化的)内存的地址返回给指针变量。

  • 指针变量指向并表示存储空间及其上存储的值。

了解了新运算符的工作原理后,让我们现在集中讨论新运算符的结构。

C++中new运算符的语法

我们可以使用以下命令请求内存空间

pointer-variable = new data-type;

除了定义指向请求内存的指针变量之外,我们还可以将请求内存初始化为一个值。

语法:

pointer-variable = new data-type(value);

除了动态请求内存外,我们甚至可以指定要提供的内存块大小。

语法:

pointer-variable = new data-type[size];

因此,在面向对象编程中,当我们将对象分配给新的运算符时,将发生以下事件:

  • 新操作符为指定对象分配内存。

  • 它调用类构造函数来初始化指定的内存空间。

C++ new运算符的示例

让我们从一个快速演示开始。

我们为整数数据类型分配一个指针变量(xx),并将空间分配给要存储到其中的值。

接下来,我们将指针变量(yy)分配给值为12的整数变量分配的内存。

#include <iostream>
using namespace std;
int main () {
 int *xx = new int;
 int *yy = new int(12);

 cout << "Value of xx pointer variable : " << *xx << endl;
 cout << "Value of yy pointer variable : " << *yy << endl;
 
 
 return 0;
}

输出:

Value of xx pointer variable : 0
Value of yy pointer variable : 12

现在,将指针变量存储空间分配给大小= 20字节的float数据类型。

在下面的示例中,我们还在动态时间点为其分配值,并显示相同的值。

#include <iostream>
using namespace std;
int main () {

float *zz = new float[20];
for (int x = 1; x<=10; x++)
{
    zz[x] = x;
}

cout << "Values stored at the memory pointed by zz pointer variable: "  << endl;

 for (int x = 1; x<=10; x++)
{
    cout<<zz[x]<<" ";
}

 return 0;
}

输出:

Values stored at the memory pointed by zz pointer variable: 
1 2 3 4 5 6 7 8 9 10