C++-映射迭代器访问导致segfault
C++ - Map iterator access results in segfault
我试图完全重新表述这个问题。情况如下:
class Departure {
private :
unsigned int supply;
public :
Departure(int);
~Departure();
int getSupply() {
return supply;
};
};
class Route {
private :
Departure* departure;
public :
Departure& getDeparture() {
return *departure;
};
};
class Plan {
private :
std::map<Route*, double> quantities;
public :
void addRoute(Route& rt) {
quantities.insert(std::pair<Route*,double>(&rt,0));
};
void createSolution() {
std::map<Route*, double>::iterator it;
for(it = quantities.begin(); it != quantities.end(); ++it) {
it->second = it->first->getDeparture().getSupply();
};
};
添加路由后-我已经检查过了,它工作正常,我从我的试用中得到了一个segfault;到目前为止,错误位于it->first->getDeparture().getSupply()
调用中。有什么解释吗?
我猜(99%肯定)您正面临悬挂指针的问题,即当您调用createSolution时,指向Route和Department对象的指针不再有效。
简单的解决方法是不使用指针,而是将Route和Department对象存储为值。无论如何,考虑到对象太小,将它们存储为指针并没有多大好处。。。
相关文章:
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 用于访问容器<T>数据成员的正确 API
- OpenCV Tracker 属性访问在 ARM 上因 SEGFAULT 而失败,但在 X86_64 中工作
- 当一个对象试图访问它的某个属性时,程序是否可能发送Segfault
- 访问std :: list instruct struct诱导segfault
- ctypes/C++segfault访问成员变量
- RapidXML访问同级节点似乎毫无原因地导致segfault
- 访问迭代器值会导致segfault 11
- 访问已销毁的对象不会导致segfault
- 尝试访问QGraphicsTextItem的成员时出现segfault
- 使用共享指针访问单例子类时的SEGFAULT
- C++-映射迭代器访问导致segfault
- 从插槽访问中央小部件时出现Segfault
- 尝试访问向量中对象中的字段时出现Segfault
- 访问成员stl映射时的C++Segfault
- 访问私有成员导致segfault
- 试图访问对象成员时出现segfault
- 在c++地图访问上的segfault