关于vector的内存空间,有两个函数需要注意:size()成员指当前拥有的元素个数;capacity()成员指当前(容器必须分配新存储空间之前)可以存储的元素个数reserve()成员可以用来控制容器的预留空间。vector另外一个特性在于它的内存空间会自增长,每当vector容器不得不分配新的存储空间时,会以加倍当前容量的分配策略实现重新分配。例如,当前capacity为50,当添加第51个元素时,预留空间不够用了,vector容器会重新分配大小为100(原来的两倍)的内存空间,作为新连续存储的位置。
vector的内存占用空间只增不减,所有内存空间是在vector析构时候才能被系统回收。
可以用swap()来帮助你释放内存。具体方法如下:
如果vector中存放的是指针,那么当vector销毁时,这些指针指向的对象不会被销毁,那么内存就不会被释放。如下面这种情况,vector中的元素时由new *** 作动态申请出来的对象指针:
~vector()
销毁容器对象并回收了所有分配的内存
C++头文件之C、传统 C++#include <assert.h>//设定插入点
#include <ctype.h>//字符处理
#include <errno.h>//定义错误码
#include <float.h>//浮点数处理
#include <fstream.h> //文件输入/输出
#include <iomanip.h> //参数化输入/输出
#include <iostream.h> //数据流输入/输出
#include <limits.h>//定义各种数据类型最值常量
#include <locale.h>//定义本地化函数
#include <math.h> //定义数学函数
#include <stdio.h>//定义输入/输出函数
#include <stdlib.h>//定义杂项函数及内存分配函数
#include <string.h>//字符串处理
#include <strstrea.h> //基于数组的输入/输出
#include <time.h> //定义关于时间的函数
#include <wchar.h>//宽字符处理及输入/输出
#include <wctype.h>//宽字符分类
C++头文件之标准 C++ (同上的不再注释)
#include <algorithm> //STL 通用算法
#include <bitset> //STL 位集容器
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>//复数类
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque> //STL 双端队列容器
#include <exception> //异常处理类
#include <fstream>
#include <functional> //STL 定义运算函数(代替运算符)
#include <limits>
#include <list>//STL 线性列表容器
#include <map>//STL 映射容器
#include <iomanip>
#include <ios>//基本输入/输出支持
#include <iosfwd> //输入/输出系统使用的前置声明
#include <iostream>
#include <istream>//基本输入流
#include <ostream>//基本输出流
#include <queue> //STL 队列容器
#include <set>//STL 集合容器
#include <sstream>//基于字符串的流
#include <stack> //STL 堆栈容器
#include <stdexcept> //标准异常类
#include <streambuf> //底层输入/输出支持
#include <string> //字符串类
#include <utility>//STL 通用模板类
#include <vector> //STL 动态数组容器
#include <cwchar>
#include <cwctype>
using namespace std
C++头文件之C99 增加
#include <complex.h>//复数处理
#include <fenv.h>//浮点环境
#include <inttypes.h>//整数格式转换
#include <stdbool.h>//布尔环境
#include <stdint.h> //整型环境
#include <tgmath.h> //通用类型数学宏
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)