繁体   English   中英

尝试在结构内部打印矢量大小时出现分段错误

[英]Segmentation fault while trying to print size of a vector inside a structure

这段代码给我一个错误

struct state{
    int time_taken;
    vector<int>time_live;
    string loc_name;
    vector<int>loc;
};


for(int u=0;u<(A[start].loc.size());u++)
{
  l=A[start].loc[1];
  if(A[l].time_taken < min_time)
  { 
    min_time=A[l].time_taken;
    finish = l;
  }
}

这给出了分段错误。

首先,如果A[start]超出范围,则可能会遇到问题,取决于A是什么,这可能是段错误也可能不是段错误。

其次,在循环中,您有A[start].loc[1] ,如果A[start].loc为空,它将超出范围。 你是说loc[u]吗?

从上面的代码。

在for循环之前,请确保

start < A.size();

内循环

l = A[start].loc[u];  // instead of 1

和之前

if(A[l].time_taken < min_time) 
check
if (l < A.size())

我喜欢安东尼·威廉姆斯的第一点,但我猜想A[l]超出范围。

也许您可以尝试使用A.at(start)访问A,如果它超出了范围,它现在将抛出异常,而不是段隔离

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM