结构的 C 分段故障数组



我正在一个大项目中工作,在以下情况下遇到分段错误。如果有人能说出问题的可能原因,那就太好了。谢谢。

我有两个结构,

struct HashElt
{
char* url;
float pageRank;
char* token;
struct HashElt* next;
};
struct HTable
{
struct HashElt* table[2000]; 
};

HTable 中的表变量包含 HashElt 结构,它是链列表中的一个节点。当我尝试将新的 HashElt 链接到表变量中已经存在的 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; 提前谢谢。

看看你的错误,你的 while 循环将在currEltNULL时中断,在语句中currElt->next = elt;等同于NULL->next = elt这意味着你接下来使用 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;
}

最新更新