作者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