[問題] system("puase")停不下來

看板C_and_CPP (C/C++)作者 (哪裡有彩虹..)時間16年前 (2009/04/16 11:50), 編輯推噓3(3013)
留言16則, 2人參與, 最新討論串1/1
tree_ptr tree(FILE *input) { int data; if(fscanf(input, "%d", &data)!=EOF) { if(data!=-1) { tree_ptr n_node; n_node =(tree_ptr)malloc(sizeof(tree_ptr)); n_node->lchild = NULL; n_node->rchild = NULL; n_node->data = data; n_node->lchild = tree(input); n_node->rchild = tree(input); return n_node; } else return NULL; } } int main() { int x[60]={0}; int i=0; FILE *input; input=fopen("input.txt", "r" ); tree_ptr root; system("pause"); root = tree(input); /*執行完後system("pause")就失去作用了*/ printf("%d\n",root->data); printf("%d\n", root->lchild->rchild->data); system("pause"); } ==== 因為我想看看做出來的tree是不是正確 就稍微測試了一下 基本上是有建立出來 而且正確 但是不知道為什麼system("pause")在call完function後就停不下來了 用Devcpp的debug模式卻完全正常...可以請問一下這怎麼了嗎? 謝謝~! orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.36.136

04/16 11:53, , 1F
通常這可能是有記憶體存取錯誤, 所以debug build可能看
04/16 11:53, 1F

04/16 11:54, , 2F
不出來, release build一經過optimization, 就一堆狀況
04/16 11:54, 2F

04/16 11:54, , 3F
了; 第二次pause執行不到, 可能就是中間call stack爛了
04/16 11:54, 3F

04/16 11:55, , 4F
但是debug他printf那兩行有做出來 那root會有錯嗎 謝謝~
04/16 11:55, 4F

04/16 12:36, , 5F
如果release的printf沒出來那還是有機會, 因為release
04/16 12:36, 5F

04/16 12:36, , 6F
build可能會把data/instruction reorder, 所以有些問題
04/16 12:36, 6F

04/16 12:37, , 7F
debug一時沒測出來, 到了release build時就可能會掛掉
04/16 12:37, 7F

04/16 12:38, , 8F
小弟之前就遇到該傳DWORD的只給它BYTE的空間去寫, debug
04/16 12:38, 8F

04/16 12:38, , 9F
版都正常, release版call stack就被我這樣給弄爛掉了Orz
04/16 12:38, 9F

04/16 12:43, , 10F
請問~~tree_ptr是一個pointer吧?? 您malloc時只配給它
04/16 12:43, 10F

04/16 12:43, , 11F
sizeof(tree_ptr)的空間, 32bit環境下也就只有4 bytes啊
04/16 12:43, 11F

04/16 12:44, , 12F
是不是應該malloc tree_node(假)完整的size出來才對啊??
04/16 12:44, 12F

04/16 13:36, , 13F
恩恩 這點我也有想過..但是看老師給的範例是這樣alloc
04/16 13:36, 13F

04/16 13:37, , 14F
就沒再多想了XD 我試試看給他NODE的大小try看 大感謝~
04/16 13:37, 14F

04/16 13:39, , 15F
謝謝你~ 換了編譯環境就不給過了!! 是segament的問題沒
04/16 13:39, 15F

04/16 13:41, , 16F
錯 是我看錯老師給的範例了orz 我真蠢 真的感謝~!!
04/16 13:41, 16F
文章代碼(AID): #19vghxcS (C_and_CPP)
文章代碼(AID): #19vghxcS (C_and_CPP)