[問題] binary_tree裡free的問題

看板C_and_CPP作者 (小天)時間9年前 (2014/09/04 17:04), 編輯推噓3(302)
留言5則, 4人參與, 最新討論串1/1
static struct node{ char data; node *lchind, *rchild; }; static node *createatree(node *tree) { char item; tree = (node*)malloc(sizeof(node*)); cout<< "請輸入字元" <<endl; cin >> item; if(item =='t') tree = NULL; else { tree->data = item; tree->lchind = createatree(tree->lchind); tree->rchild = createatree(tree->rchild); } return tree; } static void destroy(node *tree) { if(tree) { destroy(tree->lchind); destroy(tree->rchild); free(tree); } } int main() { struct node *tree = NULL; tree = createatree(tree); destroy(tree); return 0; } ////////////程式分隔線////////////////// 我寫了一個可以讓使用者輸入的tree,輸入t時為null,並用前序排列 但是在free的函數上出了問題(爆掉跳出來了) 我逐行的跑進去,確定它是指到葉子的時候才free的(tree左右都是null) 想請問code的問題在哪裡?? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1409821468.A.C34.html

09/04 17:24, , 1F
free(tree); 下一行多個tree=NULL; 看看
09/04 17:24, 1F

09/04 17:28, , 2F
一開始的header...加了後g++ 會叫
09/04 17:28, 2F

09/04 17:30, , 3F
但改成struct node{char data,...};跑起來沒問題啊
09/04 17:30, 3F

09/04 17:40, , 4F
sizeof(node*) ?
09/04 17:40, 4F

09/04 17:53, , 5F
sizeof確實宣告錯了,改成sizeof(node)就可以了,感謝!!!
09/04 17:53, 5F
文章代碼(AID): #1K22iSmq (C_and_CPP)