【发布时间】:2018-07-28 15:25:39
【问题描述】:
我不确定为什么 strcpy 会导致分段错误,并且想知道是否有人可以向我解释原因。我最初有temp->data = name,但这导致每次我更改名称数组并寻找解决方案时节点值都会发生变化
typedef struct BST {
char *data;
struct BST *left;
struct BST *right;
}node;
node *create(char name[]){
node *temp;
temp = (node *) malloc(strlen(name) + 1);
strcpy(temp->data, name);
temp->left = temp->right = NULL;
return temp;
}
【问题讨论】:
-
显示结构
node。 -
您没有为结构分配足够的空间。您需要分配
sizeof(*temp)(或sizeof(node))以及字符串空间。由于您没有使用灵活的数组成员,因此您可能需要两次分配;你的肯定是不够的。而且temp->data也没有初始化;它没有指向任何已知的内存。