结构的C分段错误数组
C segmentation fault array of struct
我在一个大项目中工作,在以下情况下出现分段错误。如果有人能说出问题的可能原因,那就太好了。谢谢
我有两个结构,
struct HashElt
{
char* url;
float pageRank;
char* token;
struct HashElt* next;
};
struct HTable
{
struct HashElt* table[2000];
};
HTable 中的table 变量包含HashElt 结构,它是linked 列表中的一个节点。当我尝试 link 一个新的 HashElt 到 table 变量中已经存在的 HashElt 时,出现分段错误。
if(table->table[i] == NULL)
table->table[i] = elt;
else
{ struct HashElt* currElt;
currElt = table->table[i];
while(currElt != NULL)
{ if(currElt == elt) return;
currElt = currElt->next;
}
currElt->next = elt;
}
我在这一行遇到分段错误,currElt->next = elt;
提前致谢。
看看你的错误,当 currElt
是 NULL
并且在语句中 currElt->next = elt;
等同于 NULL->next = elt
时,你的 while 循环将中断,这意味着你正在使用接下来访问其值的 NULL 指针,这就是您遇到分段违规的原因。
while(currElt != NULL)
{
if(currElt == elt) return;
currElt = currElt->next;
}
currElt->next = elt;
}
所以像下面这样改变它,一旦 currElt
指向最后一个节点,这里的循环就会中断,因此它在这里不为空。
while(currElt->next != NULL)
{
if(currElt == elt) return;
currElt = currElt->next;
}
if(currElt == elt) return;
currElt->next = elt;
}
我在一个大项目中工作,在以下情况下出现分段错误。如果有人能说出问题的可能原因,那就太好了。谢谢
我有两个结构,
struct HashElt
{
char* url;
float pageRank;
char* token;
struct HashElt* next;
};
struct HTable
{
struct HashElt* table[2000];
};
HTable 中的table 变量包含HashElt 结构,它是linked 列表中的一个节点。当我尝试 link 一个新的 HashElt 到 table 变量中已经存在的 HashElt 时,出现分段错误。
if(table->table[i] == NULL)
table->table[i] = elt;
else
{ struct HashElt* currElt;
currElt = table->table[i];
while(currElt != NULL)
{ if(currElt == elt) return;
currElt = currElt->next;
}
currElt->next = elt;
}
我在这一行遇到分段错误,currElt->next = elt; 提前致谢。
看看你的错误,当 currElt
是 NULL
并且在语句中 currElt->next = elt;
等同于 NULL->next = elt
时,你的 while 循环将中断,这意味着你正在使用接下来访问其值的 NULL 指针,这就是您遇到分段违规的原因。
while(currElt != NULL)
{
if(currElt == elt) return;
currElt = currElt->next;
}
currElt->next = elt;
}
所以像下面这样改变它,一旦 currElt
指向最后一个节点,这里的循环就会中断,因此它在这里不为空。
while(currElt->next != NULL)
{
if(currElt == elt) return;
currElt = currElt->next;
}
if(currElt == elt) return;
currElt->next = elt;
}