私はちょうどベクトルと構造体について学び、ある時点で、ベクトルのサイズをバイト単位で出力しようとしました。ここでは、コードです:ベクトルのC++サイズは24ですか?
#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;
}
出力は24
と4
です。
明らかに、2行目がintのサイズであるため、4が出力されます。しかし、なぜ他の価値24が正確にあるのですか?ベクトルは24バイトのメモリを占有していますか?ありがとう!
std::vector
を開始します](http://stackoverflow.com/questions/30422205/why-the-libc-stdvector-internally-keeps-three-pointers-instead-of-one-pointe) – jaggedSpire
これは 'class std :: vectorのサイズです'。これは実装に依存し、そのようなクラスのメンバのサイズの合計です。通常、基になるCスタイルの配列へのポインタ、サイズ、容量などのさまざまなメンバー。 –
Banex
注意: 'delete [] f1'は間違っています、それは' delete f1'だけです –