使用strcpy()使用struct的char数组成员进行分段错误

时间:2016-08-15 14:27:58

标签: c arrays struct char 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");

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

1 个答案:

答案 0 :(得分:2)

为止,

treeptr = &companyStructure;

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

的事实
NODE *head;

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

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

之前

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

另外,请检查[ this ],了解为什么要使用strncat代替strcpy