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