[英]Binary Search Tree Insertion throws segmentation Fault
有人可以解釋下面的二進制搜索插入代碼有什么問題嗎?當我嘗試插入第二個元素時,它會給出分段錯誤。
node * insert(node * root, int value)
{
if(root == NULL){
node *newnode = (node *)malloc(sizeof(node));
newnode->data = value;
newnode->left = NULL;
newnode->right = NULL;
root = newnode;
}
else{
if(root->data > value)
insert(root->left, value);
if(root->data < value)
insert(root->right, value);
}
return root;
}
int main(){
node* root = NULL;
root = insert(root, 5);
root = insert(root, 10);
}
你必須包括stdlib.h
。
否則,編譯器不知道malloc
的原型並假設它返回一個int
而不是一個指針。 如果您的ABI以不同方式處理指針和整數,則會導致問題。
演員隱藏相應的警告。
正如我所看到的,有兩種可能性可能導致崩潰:
正如@undur_gongor所指出的那樣,你不是要包含stdlib.h
,而是運行一個不同大小和指針大小的體系結構。 這完全符合您不應該轉換malloc結果的原因
你失去了記憶。 由於您沒有檢查malloc
的結果,因此它可能已失敗並返回NULL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.