そのため、コードでセグフォルトが発生していますが、何が原因なのかわかりません。私が捕まえられなかった何かを捕まえることができる人はいますか?
論理的には、最後に物を連結して char 配列 (文字列) を作成し、それを文字列の配列に追加しようとしています。
最終的には、この「word1、word2、word3、word4、word5...など」のようになります。
セグメント障害が発生するstrcat(str, ", ");
void save_ladder(graphNode *curNode) {
char *str = malloc(1000 * sizeof(char));
strcpy(str, "");
strcat(str, curNode->word);
strcat(str, ", ");
graphNode *prev = curNode->prevWord;
while (prev != NULL) {
if (prev->prevWord != NULL) {
strcat(str, prev->word);
strcat(str, ", "); // SEG FAULT HAPPENS HERE
}
else
strcat(str, prev->word);
prev = prev->prevWord;
}
ladders[numLadders++] = str;
}
gdb スタックトレース:
Program received signal SIGSEGV, Segmentation fault.
0x00000000004013d1 in save_ladder (curNode=0x6420f0) at wordladder.c:150
150 strcat(str, ", ");
なぜこれが起こっているのか誰にも分かりますか?