Lei*_*sen 0 c++ pointers destructor vector
我有一个vector<vector<Person*>*>*
被调用的组(是的,我知道shared_ptr,但我不能在这个上下文中使用它们),另一个叫做partialGroups
无论如何,在方法结束时,我删除了所有内部向量,但不删除了人本身,因为我仍然希望它们有效,所以这里是代码的结尾:
// 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;
Run Code Online (Sandbox Code Playgroud)
然后我用这行代码调用该方法:
vector<vector<Person*>*> *currentMatch = sort(*people);
Run Code Online (Sandbox Code Playgroud)
我可以一直运行gdb到返回组; 声明,并查看数据结构,这很好.但是,当我退出该方法时,程序崩溃,堆栈跟踪显示它在向量析构函数本身中崩溃.
到底是什么导致了这个?它不应该是Person析构函数的问题,因为内部向量是指向人的指针.另外,取出删除行并没有什么区别.(是的,我知道它会留下内存泄漏,但它可能有助于诊断问题).
谢谢.
编辑:此外,错误是一个sigabrt