gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:51:22 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com