Итак, я получаю ошибку seg в своем коде, и я просто не могу понять, что ее вызывает. Кто-нибудь смог поймать то, чего не было у меня?
Логически я пытаюсь создать массив символов (строку), объединяя элементы в конец, а затем добавляя их в массив строк.
то, что в конечном итоге должно выглядеть так: «слово1, слово2, слово3, слово4, слово5... и т. д.»
Ошибка сегмента происходит 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, ", ");
Кто-нибудь знает, почему это может происходить?
sizeof(char)
всегда равно 1. И покажите еще код, касающийся структур и выделения памяти их содержимому - проблема, вероятно, кроется в них. - person ljedrz   schedule 09.12.2012