作者keterwang (哪裡有彩虹..)
看板C_and_CPP
標題[問題] system("puase")停不下來
時間Thu Apr 16 11:50:17 2009
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
1F:推 VictorTom:通常這可能是有記憶體存取錯誤, 所以debug build可能看 04/16 11:53
2F:→ VictorTom:不出來, release build一經過optimization, 就一堆狀況 04/16 11:54
3F:→ VictorTom:了; 第二次pause執行不到, 可能就是中間call stack爛了 04/16 11:54
4F:→ keterwang:但是debug他printf那兩行有做出來 那root會有錯嗎 謝謝~ 04/16 11:55
5F:推 VictorTom:如果release的printf沒出來那還是有機會, 因為release 04/16 12:36
6F:→ VictorTom:build可能會把data/instruction reorder, 所以有些問題 04/16 12:36
7F:→ VictorTom:debug一時沒測出來, 到了release build時就可能會掛掉 04/16 12:37
8F:→ VictorTom:小弟之前就遇到該傳DWORD的只給它BYTE的空間去寫, debug 04/16 12:38
9F:→ VictorTom:版都正常, release版call stack就被我這樣給弄爛掉了Orz 04/16 12:38
10F:推 VictorTom:請問~~tree_ptr是一個pointer吧?? 您malloc時只配給它 04/16 12:43
11F:→ VictorTom:sizeof(tree_ptr)的空間, 32bit環境下也就只有4 bytes啊 04/16 12:43
12F:→ VictorTom:是不是應該malloc tree_node(假)完整的size出來才對啊?? 04/16 12:44
13F:→ keterwang:恩恩 這點我也有想過..但是看老師給的範例是這樣alloc 04/16 13:36
14F:→ keterwang:就沒再多想了XD 我試試看給他NODE的大小try看 大感謝~ 04/16 13:37
15F:→ keterwang:謝謝你~ 換了編譯環境就不給過了!! 是segament的問題沒 04/16 13:39
16F:→ keterwang:錯 是我看錯老師給的範例了orz 我真蠢 真的感謝~!! 04/16 13:41