使用 strcpy() 的结构的 char 数组成员出现分段错误

Segmentation fault with char array member of struct using strcpy()

我有一个 struct TREE 是这样定义的:

typedef struct TREE {
    NODE *head;
} TREE;

和一个 struct NODE 定义为:

typedef struct NODE {
    char boss[30];
    char name[30];
    struct NODE *firstChild;
    struct NODE *secondChild;
    struct NODE *thirdChild;
    struct NODE *fourthChild;
} NODE;

我主要有:

TREE companyStructure;
TREE *treeptr;
treeptr = &companyStructure;
strcpy(treeptr->head->name, "Ben");

但这给了我一个分段错误。有人可以帮我解释为什么会这样吗?是否有一些我没有做但我需要做的内存管理?

直到,

treeptr = &companyStructure;

看起来不错。但考虑到你有

NODE *head;

您需要为 head 分配内存。所以很可能你 错过了

treeptr->head = malloc(sizeof *treeptr->head);

做之前

strcpy(treeptr->head->name, "Ben");

此外,请检查 [ this ] 为什么要使用 strncat 而不是 strcpy