Stavo solo scherzando e imparando a conoscere sia i vettori che le strutture e, a un certo punto, ho provato a trasmettere la dimensione di un vettore in byte. Ecco il codice:C++ sizeof Vector è 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;
}
L'uscita è 24
e 4
.
Ovviamente la seconda riga ha stampato 4, perché quella è la dimensione di un int. Ma perché esattamente l'altro valore 24? Un vettore occupa 24 byte di memoria? Grazie!
Un vettore è di solito [implementato con tre puntatori ] (http://stackoverflow.com/questions/30422205/why-the-libc-stdvector-internally-keeps-three-pointers-instead-of-one-pointe) – jaggedSpire
Questa è la dimensione di 'classe std :: vector '. È dipendente dall'implementazione ed è la somma delle dimensioni dei membri di tale classe. Di solito un puntatore all'array C-style sottostante e vari membri come dimensioni, capacità e così via. –
Banex
Nota a margine 'delete [] f1' non è corretto, dovrebbe essere' delete f1' solo –