作为一些开放信息,我正在使用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/

10-11 22:41