Javatpoint标志
Javatpoint标志

什么是内存管理?

内存管理是管理计算机内存的过程,将内存空间分配给程序以提高系统的整体性能。

为什么需要内存管理?

正如我们所知,数组存储同构数据,因此大多数情况下,在声明时将内存分配给数组。有时会出现直到运行时才确定确切内存的情况。为了避免这种情况,我们声明了一个具有最大大小的数组,但是一些内存将未使用。为了避免内存的浪费,我们使用new操作符在运行时动态分配内存。

内存管理操作符

C语言,我们使用malloc ()calloc ()函数用于在运行时动态分配内存,free()函数用于释放动态分配的内存。c++也支持这些函数,但c++还定义了一元操作符,如删除执行相同的任务,即分配和释放内存。

新的操作符

一个操作符用于创建对象删除操作符用于删除对象。当使用new操作符创建对象时,该对象将一直存在,直到显式使用delete操作符删除该对象。因此,我们可以说对象的生命周期与程序的块结构无关。

语法

上面的语法用于使用new操作符创建对象。在上面的语法中,“pointer_variable”是指针变量的名称,“新”是算子,和“数据类型”定义数据的类型。

示例1:

在上面的例子中,'p'是一个int类型的指针。

示例2:

在上面的例子中,'q'是float类型的指针。

在上面的例子中,指针的声明和它们的赋值是分开进行的。我们也可以将这两个语句组合如下:

给新创建的对象赋值

给新创建的对象赋值的两种方法:

  • 只需使用赋值操作符,就可以将该值赋给新创建的对象。在上面的例子中,我们创建了两个指针'p'和'q',分别是int型和float型。现在,我们按如下方式赋值:

我们给新创建的int对象赋值45,给新创建的float对象赋值9.8。

  • 还可以使用new操作符赋值,具体操作如下:

让我们来看一些例子。

如何创建一个单维数组

正如我们所知,new操作符用于为任何数据类型甚至用户定义的数据类型(如数组、结构、联合等)创建内存空间,因此创建一维数组的语法如下:

例子:

在上面的语句中,我们创建了一个大小为8的int类型数组,其中p[0]指第一个元素,p[1]指第一个元素,以此类推。

删除操作符

当不再需要内存时,就需要释放内存,以便将内存用于其他目的。这可以通过使用delete操作符实现,如下所示:

在上述声明中,“删除”操作符是否用于删除现有对象,以及“pointer_variable”指针变量的名称。

在前面的例子中,我们使用new操作符创建了两个指针'p'和'q',可以使用以下语句删除它们:

动态分配的数组也可以通过使用以下语法从内存空间中删除:

在上面的语句中,我们需要指定定义需要释放的元素数量的大小。这种语法的缺点是我们需要记住数组的大小。但是,在最近的c++版本中,我们不需要提及大小,如下所示:

让我们通过一个简单的例子来理解:

在上面的代码中,我们使用new操作符创建了一个数组。上面的程序将在运行时获取用户输入的数组大小。当程序完成所有操作后,就使用语句删除对象删除加勒比海盗

输出

c++内存管理

新运营商的优势

以下是new操作符相对于malloc()函数的优点:

  • 它不使用sizeof()运算符,因为它会自动计算数据对象的大小。
  • 它会自动返回正确的数据类型指针,因此不需要使用类型转换。
  • 与其他操作符一样,new和delete操作符也可以重载。
  • 它还允许您在为对象创建内存空间时初始化数据对象。

下一个话题 malloc()与c++中的new





Youtube 视频加入我们的Youtube频道:现在加入

反馈


帮助别人,请分享

脸谱网 推特 pinterest

学习最新教程


准备


热门的技术


b .技术/马华






Baidu
map