У меня есть vector<vector<Person*>*>*
, называемый группами (да, я знаю о shared_ptr, но я не могу использовать их в этом контексте), и еще один, называемый частичныйГруппы
Во всяком случае, в конце метода я удаляю все внутренние векторы, но не самих людей, потому что я все еще хочу, чтобы они были действительными, и вот конец кода:
// Deal with remaining partial teams
vector<Person*> *unsortable;
groups->push_back(unsortable);
// Remaining people
for(unsigned int i = 0; i < people.size(); i++) {
unsortable->push_back(people[i]);
}
// Remaining partial groups
for(unsigned int i = 0; i < partialGroups.size();i++) {
for(unsigned int j = 0; j < partialGroups[i]->size(); j++) {
unsortable->push_back(partialGroups[i]->at(j));
}
delete partialGroups[i];
}
return groups;
Затем я вызываю метод с этой строкой кода:
vector<vector<Person*>*> *currentMatch = sort(*people);
Я могу запустить gdb вплоть до возвращаемых групп; Заявление, и, глядя на структуру данных, это просто отлично. Однако, когда я выхожу из метода, программа падает, и трассировка стека показывает, что происходит сбой в самом деструкторе вектора.
Что на земле могло вызвать это? Это не должно быть проблемой с деструктором Person, поскольку внутренний вектор имеет указатели на людей. Кроме того, удаление строки удаления не имеет значения. (Да, я знаю, что это приведет к утечке памяти, но это могло бы помочь диагностировать проблему).
Спасибо.
edit: Также ошибка sigabrt