Bonjour à tous,
j'ai fait un programme qui n'arrête pas de planter, mais je ne vois jamais vraiment ou dans la pile d'appel (en plus il est multithreadé). Pour l'instant je ne me base que sur des hypothèses. Voici donc la première.
J'ai un tableau dynamique à 2d rempli de pointeurs d'objets. En voici la définition:
std::vector< std::vector< TSquare* > > m_o_squares ;
J'ajoute des éléments dans une boucle, en créant un tableau à 1d temporaire:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
for ( unsigned char loc_uc_i = 0 ; loc_uc_i < N; loc_uc_i++ )
{
std::vector< TSquare* > loc_o_vert_squares ;
loc_o_vert_squares.push_back( new TSquare(1));
loc_o_vert_squares.push_back( new TSquare(2));
loc_o_vert_squares.push_back( new TSquare(3)); etc...
// Et ici ma question :
m_o_squares.push_back( loc_o_vert_squares );
} |
Voilà donc ma question est :
quand on fait un push_back d'un vecteur entier dans un autre vecteur (donc dans la deuxieme dimension de mon tableau en fait), est-ce que ca recopie intégralement tout le vecteur ? (ca semble etre fait quand je regarde le contenu de m_o_square[0], je retrouve bien mes squares 1, 2, 3...)
Est-ce que ca ne créé pas d'indirection ? (je veux dire, vu que loc_o_vert_squares est une variable locale et qu'elle est détruite en dehors du bloc ??).
Bref est-ce que mon jardinage pourrait venir de là ?
Merci
Partager