次のリンクリスト関数でバグが発生しましたが、どうしたらよいかわかりません。(私にとって)クレイジーな部分は、私のコードがこれまで完全に機能していて、バグが発生する前に数回の呼び出しで機能していることです。
この関数の目的は、PathItemのリンクリストの最後に新しいアイテム(BinaryItemを含むPathItem)を追加することです。私の機能は次のとおりです
void addPathItemAtEnd(struct PathItem * pathItem, struct BinaryItem * binaryItem) {
if (pathItem == NULL) {
pathItem = malloc(sizeof(struct PathItem));
pathItem->binaryItem = binaryItem;
pathItem->next = NULL;
} else {
while (pathItem->next != NULL) {
pathItem = pathItem->next;
}
struct PathItem * newPathItem = malloc(sizeof(struct PathItem));
newPathItem->binaryItem = binaryItem;
newPathItem->next = NULL;
pathItem->next = newPathItem;
}
}
問題のある行はpathItem->next = newPathItem
です。EXC_BAD_ACCESS
デバッガーでエラーが発生します。繰り返しになりますが、このコードは以前は正常に機能していたので、今何が起こっているのか理解できません...
これは、ポインタ変数の再割り当てに関する問題のようです。何が悪いのかわからない。
考え、提案、批判。必要に応じて、コードの残り/残りを添付できます。本当に事前にあなたの助けと感謝が必要です。