c++ - 我不明白为什么 map 会导致段错误

标签 c++ dictionary segmentation-fault while-loop

我有一个执行以下操作的循环:

short fooID;
char line[256]
map<short,foo> foos;
set<short> barIDs;
while (fgets(line,256,file) != NULL){
  string line_copy = line;
  /*use token to split the line into several parameters which does not effect foo * bar*/
  string token = strtok(line,",");
  token = strtok(NULL,",");
  token = strtok(NULL,",");
  token = strtok(NULL,",");
  token = strtok(NULL,",");
  barID = short(atoi(token));
  foo * bar;
  bar = new foo;
  if(barIDs.find(barID) == barIDs.end()){
     barIDs.insert(barID);
     bar->setID(barID);
     this->foos[barID] = bar;
  }
}

当我运行这段代码时,当所有的条都从文件中加载时,我得到了一个段错误。 barID 范围是 1-1192。

有什么想法吗?

谢谢

上面的代码只是我实际代码的输入摘要

最佳答案

foo * bar;

这将创建一个指向内存中随机位置的变量 bar。你需要让它指向一个有效的对象:bar = new foo; - 完成后记得删除它,迭代你的 map 并删除所有 foo 是你添加的。

关于c++ - 我不明白为什么 map 会导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5389180/

相关文章:

c++ - 遇到错误时循环不会中断

c++ - 如何测试从依赖于外部系统的外部基类派生的类

c - 我在双向链表中查找最后一个元素的代码抛出段错误

java - 不确定为什么在声明数组时我在 Java/Android 中遇到段错误

c++ - 按下按钮时Qt鼠标离开事件

c++ - 常见的 C 模式,但用 C++ 表示?

python - 使用 Python 3 从文本文件创建嵌套字典

python - 如何从带有parent_id的dict创建带有children的dict

c - 有没有办法在C中通过超过1层的多态数据结构传递函数指针

c++ - 我有一个map<string, vector<record>>,如何从vector<record>中删除记录?