首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

类数据成员中有vector的景况

2013-11-01 
类数据成员中有vector的情况strutc s{vectorintv};sizeof(s)12为什么?[解决办法]看std::vector的定义

类数据成员中有vector的情况
strutc s{
vector<int>v;
};

sizeof(s)=12;
为什么?
[解决办法]
看std::vector的定义,估计 sizeof(std::vector<int>) ==sizeof(std::vector<double>);

一般来说,std::vector,至少包含一个指针,一个容量,一个vector 大小。
32Bits 指针 4,容量 4,大小4, 4+4+4 =12;
所以, sizeof(std::vector<T>) >=12
std::vector<T>共占用 内存大小 =
 sizeof(std::vector<T>)  
+容量 
+ 分配内存额外占用的空间。

1)容量 ---为指针,所指内存分配的空间的大小,就是储存数据必须的空间大小。
会适当多分配一点,避免频繁分配的低效;
和分配小块内存,造成过多的碎片,无法收拾。

2)分配内存额外占用的空间,
指为了分配内存,必须安排一些数据,记录内存分配信息,这些也要占用空间。
和由于种种原因,多分配的内存。------- 够用就行,不是一定正好的。

热点排行