Странное поведение std :: vector - PullRequest
0 голосов
/ 27 мая 2010

У меня есть такой класс:

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);

Это упрощенная версия моего кода. Проблема в режиме отладки, работает отлично. Но в режиме релиза происходит сбой в строке «push_back». (все флаги оптимизации выключены) Я отладил его в режиме выпуска, и проблема в конструкторе A. размер вектора действительно большой с фиктивными значениями, и когда я его очищаю, он не меняется ...

Знаешь почему?

Спасибо

1 Ответ

0 голосов
/ 27 мая 2010

Я могу предположить - я бы сказал, что OBJ, вероятно, не имеет правильно реализованного конструктора копирования и / или оператора присваивания и деструктора.

...