使用 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
。
我有一个 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
。