[英]Bus Error 10 on Mac when creating a binary tree in C
我在嘗試使用C語言中的結構創建二進制樹時遇到總線錯誤。請向我提出解決此總線錯誤的解決方案。 我正在Mac OSX上編譯。
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node* left;
struct node* right;
};
struct node* NewNode(int data) {
struct node* inode ;
inode->data = data;
inode->left = NULL;
inode->right = NULL;
printf("%d\n", inode->data);
return(inode);
}
struct node* insert(struct node* node ,int data){
if(node == NULL)
return(NewNode(data));
else{
if(data <= node->data)
node->left = insert(node->left, data);
else
node->right = insert(node->right, data);
return(node);
}
}
struct node* build123a() {
struct node* root = newNode(2);
struct node* lChild = newNode(1);
struct node* rChild = newNode(3);
root->left = lChild;
root->right= rChild;
return(root);
}
int main(void) {
build123a();
}
輸出:總線錯誤10
在newNode
函數中,您正在定義結構指針struct node* inode
但未分配它。 然后訪問它以存儲數據,這是不正確的。
inode
將具有隨機值(作為地址),訪問該地址時,可能會出現總線錯誤。
您需要在函數中分配內存,例如
struct node* NewNode(int data) {
struct node* inode ;
inode = malloc(sizeof(*inode)); //allocate memory
inode->data = data;
inode->left = NULL;
inode->right = NULL;
printf("%d\n", inode->data);
return(inode);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.