迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C++ >

在 C++ 中释放 std::vector 对象

作者:迹忆客 最近更新:2023/08/29 浏览次数:

本文将解释如何在 C++/C 中释放 std::vector 对象。 首先,我们将了解释放的自编码方式,然后,我们将研究如何在 C++ 中动态释放 std::vector 对象。


在 C++ 中释放对象

当创建 C++ 中的类对象时,会自动调用称为构造函数的特殊成员函数,该函数使用一些默认值初始化该对象。 类似地,当创建的对象超出范围时,会自动调用特殊的成员函数析构函数。

这个析构函数释放了所创建的对象占用的所有内存。 释放对象占用的内存的过程称为释放。

std::vector 对象

在 C++ 中,std 是命名空间,:: 运算符是作用域运算符。 该作用域运算符告诉编译器在哪个类/命名空间中查找标识符/类。

如果表达式类似于std::cout,则表示在std命名空间中查找cout标识符。 同样,std::vector 的意思是在 std 命名空间中查找向量类。

对于释放,首先,我们需要创建一个向量类的对象。 为此,我们可以将以下代码与 GCC 编译器 C++11 一起使用:

#include<iostream>
#include<vector>

int main(){
  // Create a vector containing integers
    std::vector<int> v = { 7, 5, 16, 8 };
}

上述代码中的 std 命名空间包含多个 C++ 库。 我们首先显式添加向量库并使用它来初始化 std::vector 类型的向量。

C++ 中向量释放的自编码方法

在下面的代码中,我们明确编写了删除向量的命令。 这仅在您使用 new 关键字创建向量时适用。

新操作员发出询问免费商店内存分配的信号。 如果有足够的空间,new 运算符将分配内存,对其进行初始化,然后将新创建和初始化的内存的位置提供给指针变量。

在下面的代码中,我们首先初始化向量指针,然后检查它是否为 NULL。 完成所需的计算后,我们通过断言语句确保向量指针不为空。

然后我们使用delete语句删除向量及其占用的空间。

#include <iostream>
#include <cassert>
#include <vector>
using namespace std;

int main()
{
   std::vector<int> *vec = new std::vector<int>;
   \\***
   assert( vec != NULL);
   delete vec;
   return 0;
}

使用下面的代码,我们在完成必要的计算后分配一个空向量,从而释放 vec 分配的内存。 命令 std::vector() 创建一个具有零字节的空向量。

最后一条语句检查 vec 占用的内存(以字节为单位)。

std::vector<int> vec;
\\***
\\***
vec = std::vector<int>();
std::cout << sizeof(decltype(vec.back())) * vec.capacity() << std::endl;

C++ 中向量释放的动态方式

在 C++ 中,当您在函数内部(即在 {....} 内部)定义 std::vector 对象时,会自动调用向量类构造函数,该构造函数会初始化向量对象。 当函数执行结束时(即到达右括号}),析构函数被自动调用。

例如,

void Foo() {
  std::vector<int> v;
  ...
}

C++ 保证方法执行时将调用 v 的析构函数。 std::vector 的析构函数将确保释放它分配的任何内存。

上一篇:在 C++ 中计算两个向量之间的角度

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 C++ 中计算两个向量之间的角度

发布时间:2023/08/28 浏览次数:173 分类:C++

矢量数学是处理矢量的数学分支,矢量是具有大小和方向的几何对象。 例如,向量尾部形成的角度等于两个向量形成的角度

调整 2D 矢量大小 C++

发布时间:2023/08/28 浏览次数:138 分类:C++

在这篇短文中,我们将重点讨论如何在 C++ 中调整 2d 向量的大小。在 C++ 中调整 2D 矢量大小 要在 C++ 中调整二维向量的大小,我们需要使用名为 resize() 的函数

C++ 中的向量迭代器

发布时间:2023/08/28 浏览次数:163 分类:C++

本文介绍如何在 C++ 中迭代向量。C++ 提供了许多迭代向量的方法。 这些方法称为迭代器,它指向STL容器的内存地址;

使用 C++ 将文件读入二叉搜索树

发布时间:2023/08/27 浏览次数:52 分类:C++

本文将讨论将文件读入 C++ 中的二叉搜索树。 首先,我们将快速讨论二叉搜索树及其操作。稍后我们将看到如何将文件读入二叉搜索树。C++ 中的二叉搜索树

C++中逐级打印二叉树中的数据

发布时间:2023/08/27 浏览次数:183 分类:C++

二叉树的逐层遍历称为广度优先遍历。 本教程将教您如何使用 C++ 逐级打印二叉树中的数据,并让您熟悉执行此任务的不同方法。

用 C++ 构建解析树

发布时间:2023/08/27 浏览次数:100 分类:C++

本文将教授三种主要的 C++ 方法来在 C++ 中构建解析树。 第一种方法使用选择语句 if (条件) 语句和 if (条件) 语句 else 语句。

C++ 中的红黑树

发布时间:2023/08/27 浏览次数:52 分类:C++

本文介绍了 C++ 中的红黑树。C++ 中的红黑树 红黑树被认为是一种自平衡二叉搜索树,其中每个节点都包含表示节点颜色的不同属性。 红黑具有以下五个属性。

用 C++ 下载文件

发布时间:2023/08/27 浏览次数:199 分类:C++

本文介绍如何使用 C++ 下载文件。用 C++ 下载文件 使用 C++ 下载文件是一项简单的操作,可以使用 win32 API URLDownloadToFile 来完成。

C++ 函数末尾的常量

发布时间:2023/08/27 浏览次数:197 分类:C++

本文介绍在 C++ 函数末尾使用 const 关键字。C++ 函数末尾的 const 关键字 const 成员函数是一旦声明就不再更改或修改的函数。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便