在 C++ 中释放 std::vector 对象
本文将解释如何在 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++ 中计算两个向量之间的角度
发布时间: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 浏览次数:199 分类:C++
-
本文介绍如何使用 C++ 下载文件。用 C++ 下载文件 使用 C++ 下载文件是一项简单的操作,可以使用 win32 API URLDownloadToFile 来完成。
C++ 函数末尾的常量
发布时间:2023/08/27 浏览次数:197 分类:C++
-
本文介绍在 C++ 函数末尾使用 const 关键字。C++ 函数末尾的 const 关键字 const 成员函数是一旦声明就不再更改或修改的函数。