이것은 학교 과제물입니다. BST에 새 노드를 추가하려고하면 seg 오류가 발생합니다. 어떻게 메모리를 할당했는지와 관련이 있을지 모르지만 문제를 해결하는 방법을 알 수는 없습니다.문자열의 BST에 노드 추가
구조체 코드 : 기능을 테스트하기 위해
Tnode* add_tnode(Tnode* current_tnode, char* value) {
if (current_tnode == NULL) {
malloc(sizeof(Tnode));
current_tnode->data = value;
current_tnode->left = NULL;
current_tnode->right = NULL;
return current_tnode;
}
else {
if (strcmp(current_tnode->data, value) <= 0) {
add_tnode(current_tnode->left, value);
return current_tnode->left;
}
else {
add_tnode(current_tnode->right, value);
return current_tnode->right;
}
}
}
메인 프로그램 :
struct tnode {
char* data;
struct tnode* left;
struct tnode* right;
};
typedef struct tnode Tnode;
노드 기능을 추가 내가 분할을 역 추적 할 때
int main() {
Tnode* new_node = (Tnode*)malloc(sizeof(Tnode));
char* data1 = "Hello";
char* data2 = "Goodbye";
char* data3 = "Hi";
char* data4 = "Bye";
char* data5 = "Hey";
add_tnode(new_node, data1);
add_tnode(new_node, data2);
add_tnode(new_node, data3);
add_tnode(new_node, data4);
add_tnode(new_node, data5);
return 0;
}
이것은 내가 나타나는 오류입니다 오류 :
#0 0x0000003458478350 in strcmp() from /lib64/libc.so.6
#1 0x00000000004005be in add_tnode (current_tnode=0x601010,
value=0x400708 "Hello") at tree.c:16
#2 0x0000000000400523 in main() at treetest.c:12
strcmp()가 노드에 저장된 문자열을 찾으려고 시도 할 때 찾을 수 없다고 생각합니다. 어떤 도움이나 조언을 주시면 감사하겠습니다! (add_tnode
에서)
디버거를 사용해 보셨습니까? –
예, 그렇습니다. 나는 seg fault에 대한 backtrace를 얻었습니다. –
음, 다음에 생성/변경된 데이터 구조를 확인하고 정확히 무슨 일이 일어나는지 확인하십시오. –