Я реализовал двоичную кучу в виде дерева, а узел дерева выглядит следующим образом;
struct tree_node {
char* p_word;
int count;
struct tree_node* parent;
struct tree_node* p_left;
struct tree_node* p_right;
};
Все работает отлично, пока не доходит до члена char *. Когда я пытаюсь выделить некоторое пространство памяти для p_word, во время выполнения мне выдается «Ошибка сегментации».
fgets(buffer, BUFFERSIZE, fp);
for(tok = strtok(buffer, " "); tok; tok = strtok(0, " ")) {
if(tok) {
curr = (lpnode)malloc(sizeof(node));
curr->p_left = curr->p_right = NULL;
curr->count = 1;
curr->p_word = (char*)malloc(sizeof(char) * strlen(tok));
strcpy(curr->p_word, tok);
insert(&root, &root, curr);
}
}
fclose(fp);
Обратите внимание, что curr представляет узел, который будет добавлен к дереву, а root представляет корневой узел дерева.
Как я могу преодолеть эту проблему, не вызывая утечки памяти?