作为一些开放信息,我正在使用Visual Studio 2013社区。我注意到std::vector
中的内容与sizeof返回的内容之间不匹配,我想知道是否有人可以阐明这是为什么。
如果我声明一个空 vector :
std::vector<int> v;
那么
sizeof(v)
是16个字节。对于第一个元素的ptr为4。 _我的第一次
ptr为最后一个元素之后的4。 _我最后一次
4为容量int。
int的大小为4。
这很有意义..除了在 vector 类中还有另一个成员ptr之外, vector 的容量称为_MyEnd。
那么,为什么
sizeof(v)
不返回20个字节呢?编辑:原来我的一些断言是错误的:)下面的答案为我指明了正确的方向……以防万一将来有人遇到此问题并感到困惑。
大小为16处于 Debug模式,在
sizeof
版本中返回12。12是3个指针
_MyFirst
,_MyLast
和_MyEnd
。 最佳答案
将/d1reportSingleClassLayout
开关添加到编译器参数以查看类的布局。 STL在video中解释了此开关的用法。也有来自Microsoft SDET的有关编译器的博客文章,但现在找不到。
关于c++ - 为什么sizeof(std::vector <int>)返回16个字节,而看起来却有20个字节的成员数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35015429/