我正在C中使用二叉搜索树。我在初始化多个节点时遇到问题。初始化多个节点时出现段错误
typedef struct Node Node;
struct Node{
int* data;
Node* leftChild;
Node* rightChild;
Node* parent;
};
void initNode(Node* node, int* data){
node->data = data;
node->leftChild = NULL;
node->rightChild = NULL;
node->parent = NULL;
}
上面的代码似乎只在调用initNode()时才工作正常。但如果我尝试进行第二次呼叫,我会收到段故障。
我主要如下所示:
int main(){
Node* node;
Node* node2;
int a = 12;
int b = 15;
initNode(node, &a);
printf("%i \n", *node->data);
}
这工作。但是,如果我这样做:
int main(){
Node* node;
Node* node2;
int a = 12;
int b = 15;
initNode(node, &a);
initNode(node2, &b);
printf("%i \n", *node->data);
}
我得到一个段错误。任何想法为什么会发生这种行为?
你需要malloc你的节点 –
我有malloc在函数调用,但这似乎并不奏效。但是,如果我有主的话,它确实有效。任何想法,为什么这是? –
您将内存分配给@Orel指向的'node'? – ameyCU