我无法解决以下问题:
我有一个结构:
enum node_type {
FRUIT,
QUESTION
};
typedef enum node_type type;
struct node {
type node_type;
union node_info {
char *fruit;
char *question;
}data;
struct node *left;
struct node *right;
};
typedef struct node node_p;
当我尝试访问成员类型(这是一个枚举)时,我无法更改其值。它编译,但当我运行它时,我得到一个'分段错误'。 我的主要方法是这样的:
node_p *node1 = NULL;
node1->node_type = FRUIT;
node1->data.question = "Apple";
有谁知道这个问题似乎是什么?
答案 0 :(得分:1)
您必须为节点分配内存。例如
node_p *node1 = malloc( sizeof( node_p ) );
if ( node1 != NULL )
{
node1->node_type = FRUIT;
node1->data.question = "Apple";
}
不要忘记释放已分配的mempry,然后使用免费功能不再需要节点:
free( node1 );