J'ai une classe comme ceci:comportement étrange de std :: vecteur
class OBJ{...};
class A
{
public:
vector<OBJ> v;
A(int SZ){v.clear(); v.reserve(SZ);}
};
A *a = new A(123);
OBJ something;
a->v.push_back(something);
Ceci est une version simplifiée de mon code. Le problème est en mode débogage il fonctionne parfaitement. Mais en mode release, il se bloque à la ligne "push_back". (avec tous les drapeaux d'optimisation OFF) Je l'ai débogué en mode release et le problème est dans le constructeur de A. la taille du vecteur est quelque chose de vraiment grand avec des valeurs factices et quand je l'efface, ça ne change pas ..
Savez-vous pourquoi?
Merci,
Étant donné que le vecteur stocke les instances OBJ directement (au lieu de pointeurs vers OBJ), le push_back copie les instances OBJ de construction de copie. Le constructeur de copie pour OBJ est-il correctement implémenté? – Patrick