Bon, je suis un peu un nioob en C++, mais je me pose tout de même quelques questions sur l'implémentation des vector.
Bêtement, je pensais que c'était grosso-modo une structure comprenant un bloc mémoire (avec malloc), la taille réelle, la taille occupée, des pointeurs vers le début et la fin.
Petit exemple de code :
#include <vector>
class toto {
public:
std::vector<int> tata;
};
int main(void) {
toto titi;
titi.tata.push_back(3);
toto *tutu = new toto();
tutu->tata.push_back(3);
delete tutu;
return 0;
}
Ça compile avec les options standards (-Wall -Wextra -pedantic), et valgrind ne me dit rien quand je l'exécute (
no leaks are possible).
Comment se fait-il qu'il n'y ait pas besoin d'initialiser le vecteur et le bloc mémoire ? L'initialisation se fait-elle automatiquement ?
Comment se fait-il que valgrind ne râle pas alors que je n'ai pas utilisé clear ?