我在我的 c++ 程序中遇到了段错误,无法弄清楚我的错误。
我有一个类 Map,它是 MapCells 类的对象的二维向量。任务是从一个单元到另一个单元。从每个单元格到其他单元格有两种可能的方式。也许一些“伪”代码可以更好地解释它:
//map.h
class MapCell {
private:
MapCell *p_way1_, *p_way2_;
int some_information_;
public:
MapCell* getWayPointer1();
MapCell* getWayPointer2();
int getInformation();
void setWayPointer1(MapCell* new_p_way1);
void setWayPointer1(MapCell* new_p_way2);
};
class Map {
private:
std::vector< std::vector<MapCell> > map_;
public:
void initializeMap();
MapCell* getStartPointer();
};
int main()
{
Map map;
map.initializeMap();
MapCell *p_current_cell, *p_next_cell;
p_current_cell = map.getStartPointer();
while(p_current_cell->getInformation() != 0)
{
if(p_current_cell->getInformation() == 1)
{
p_next_cell = p_current_cell->getWayPointer1();
}
else
{
p_next_cell = p_current_cell->getWayPointer2();
}
p_current_cell = p_next_cell;
}
return 0;
}
这只是真实代码的一小部分。但我认为我犯了一个根本性的错误,所以我希望这是足够的代码来修复它。问题是,我的代码运行了几分钟没有问题,突然我得到一个段错误。gdb 指出,段错误发生在调用 getInformation() 时。我还发现,在某些时候所有 p_way2_ 向量都会导致胡说八道。你能帮助我吗?
非常感谢您!