读书人

类数据成员中有vector的景况

发布时间: 2013-11-01 14:43:02 作者: rapoo

类数据成员中有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)分配内存额外占用的空间,
指为了分配内存,必须安排一些数据,记录内存分配信息,这些也要占用空间。
和由于种种原因,多分配的内存。------- 够用就行,不是一定正好的。

读书人网 >C++

热点推荐