Вы храните указатели в своем векторе или копируете в него?Например, это:
class MyClass;
vector<MyClass> my_vector;
//or
vector<MyClass*> my_vector;
Если это первое, то при вызове push_back()
вы создаете локальную копию нового объекта, вектор делает copy toсохраните в векторе, и тогда ваш временный объект выйдет из области видимости и будет уничтожен.
Как и во второй раз, я предполагаю, что ваш класс не написан для правильной обработки копий, поэтому деструктор из вашего временного экземпляраудаляет что-то, но копия все еще ссылается на тот же указатель.Затем, когда он по какой-то причине удаляется (или ваш новый ссылается на то же самое по какой-то причине), он ломается.Трудно сказать, не видя код для ваших классов.