簡體   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