<tfoot id='YjKi7'></tfoot>

  • <small id='YjKi7'></small><noframes id='YjKi7'>

    <legend id='YjKi7'><style id='YjKi7'><dir id='YjKi7'><q id='YjKi7'></q></dir></style></legend>

          <bdo id='YjKi7'></bdo><ul id='YjKi7'></ul>
        <i id='YjKi7'><tr id='YjKi7'><dt id='YjKi7'><q id='YjKi7'><span id='YjKi7'><b id='YjKi7'><form id='YjKi7'><ins id='YjKi7'></ins><ul id='YjKi7'></ul><sub id='YjKi7'></sub></form><legend id='YjKi7'></legend><bdo id='YjKi7'><pre id='YjKi7'><center id='YjKi7'></center></pre></bdo></b><th id='YjKi7'></th></span></q></dt></tr></i><div id='YjKi7'><tfoot id='YjKi7'></tfoot><dl id='YjKi7'><fieldset id='YjKi7'></fieldset></dl></div>
      1. C++ sizeof Vector 是 24?

        时间:2023-09-16

          <legend id='FFpxM'><style id='FFpxM'><dir id='FFpxM'><q id='FFpxM'></q></dir></style></legend>

            <small id='FFpxM'></small><noframes id='FFpxM'>

              <tfoot id='FFpxM'></tfoot>
                  <tbody id='FFpxM'></tbody>
                <i id='FFpxM'><tr id='FFpxM'><dt id='FFpxM'><q id='FFpxM'><span id='FFpxM'><b id='FFpxM'><form id='FFpxM'><ins id='FFpxM'></ins><ul id='FFpxM'></ul><sub id='FFpxM'></sub></form><legend id='FFpxM'></legend><bdo id='FFpxM'><pre id='FFpxM'><center id='FFpxM'></center></pre></bdo></b><th id='FFpxM'></th></span></q></dt></tr></i><div id='FFpxM'><tfoot id='FFpxM'></tfoot><dl id='FFpxM'><fieldset id='FFpxM'></fieldset></dl></div>
                  <bdo id='FFpxM'></bdo><ul id='FFpxM'></ul>
                • 本文介绍了C++ sizeof Vector 是 24?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我只是在胡闹,学习向量和结构体,有一次,我尝试以字节为单位输出向量的大小.代码如下:

                  I was just messing around and learning about vectors as well as structs, and at one point, I tried outputting the size of a vector in bytes. Here's the code:

                  #include <iostream>
                  #include <vector>
                  
                  struct Foo{
                      std::vector<int> a;
                  };
                  
                  int main()
                  {
                      using std::cout; using std::endl;   
                  
                      Foo* f1 = new Foo;
                  
                      f1->a.push_back(5);
                      cout << sizeof(f1->a) << endl;
                      cout << sizeof(f1->a[0]) << endl;
                  
                      delete[] f1;
                  }
                  

                  输出为244.

                  显然第二行打印了 4,因为那是 int 的大小.但为什么另一个值是 24?向量是否占用 24 字节的内存?谢谢!

                  Obviously the second line printed 4, because that is the size of an int. But why exactly is the other value 24? Does a vector take up 24 bytes of memory? Thanks!

                  推荐答案

                  虽然std::vector 的公共接口是由标准定义的,但可以有不同的实现:换句话说,std::vector 的内幕可以从一个实现到另一个实现而改变.

                  While the public interface of std::vector is defined by the standard, there can be different implementations: in other words, what's under the hood of std::vector can change from implementation to implementation.

                  即使在相同的实现中(例如:给定版本的 Visual C++ 附带的 STL 实现),std::vector 的内部结构可能会因发布版本和调试版本而发生变化.

                  Even in the same implementation (for example: the STL implementation that comes with a given version of Visual C++), the internals of std::vector can change from release builds and debug builds.

                  您看到的 24 大小可以解释为 3 个指针(在 64 位体系结构上,每个指针的大小为 8 个字节;因此您有 3 x 8 = 24 个字节).这些指针可以是:

                  The 24 size you see can be explained as 3 pointers (each pointer is 8 bytes in size on 64-bit architectures; so you have 3 x 8 = 24 bytes). These pointers can be:

                  • 向量开始
                  • 向量结束
                  • 为向量保留的内存结束(即向量的容量)

                  这篇关于C++ sizeof Vector 是 24?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:如果增加一个等于 STL 容器的结束迭代器的迭代器 下一篇:sizeof() 一个向量

                  相关文章

                  最新文章

                  <i id='BO6Wj'><tr id='BO6Wj'><dt id='BO6Wj'><q id='BO6Wj'><span id='BO6Wj'><b id='BO6Wj'><form id='BO6Wj'><ins id='BO6Wj'></ins><ul id='BO6Wj'></ul><sub id='BO6Wj'></sub></form><legend id='BO6Wj'></legend><bdo id='BO6Wj'><pre id='BO6Wj'><center id='BO6Wj'></center></pre></bdo></b><th id='BO6Wj'></th></span></q></dt></tr></i><div id='BO6Wj'><tfoot id='BO6Wj'></tfoot><dl id='BO6Wj'><fieldset id='BO6Wj'></fieldset></dl></div>
                  <legend id='BO6Wj'><style id='BO6Wj'><dir id='BO6Wj'><q id='BO6Wj'></q></dir></style></legend><tfoot id='BO6Wj'></tfoot>

                  1. <small id='BO6Wj'></small><noframes id='BO6Wj'>

                        <bdo id='BO6Wj'></bdo><ul id='BO6Wj'></ul>