作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个执行以下操作的循环:
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/
我是一名优秀的程序员,十分优秀!