空载体的开销是多少?

30 c++ memory stl vector overhead

使用空向量与指向向量的指针的内存开销是多少?

选项A:

std::vector<int> v;
Run Code Online (Sandbox Code Playgroud)

选项B:

std::vector<int> *v = NULL;
Run Code Online (Sandbox Code Playgroud)

我相信选项B占用1 32位指针(假设这里是32位)空'v'需要多少内存?

Éri*_*ant 33

至于问题:这取决于实施.使用MSVC 7.1:

std:: cout << sizeof(std::vector<int>) << std::endl;
Run Code Online (Sandbox Code Playgroud)

给我16(字节).(3个指针:容量的开始,结束和结束,加上一个分配器)

但是应该注意,指向矢量的指针给它带来了更大的开销:

  • 在非空情况下的时间和空间
  • 在所有情况下都很复杂.

  • @Legate:是的.这就是我写"非空案"的原因 (6认同)

And*_*ant 12

它完全取决于实现,你既不应该假设也不应该依赖细节.值得一提的是使用VC的20字节.


Wel*_*bog 5

std::vector v;占用sizeof(v)空间.它可能因实现而异,因此运行它并找出需要多少.


小智 0

取决于实现,可能是一个指针和两个表示当前大小和容量的整数。