当前位置: 代码迷 >> C语言 >> 请教一个程序死循环问题~~~~~高手请进!!!
  详细解决方案

请教一个程序死循环问题~~~~~高手请进!!!

热度:291   发布时间:2008-03-20 19:24:04.0
不明白啊,
----------------解决方案--------------------------------------------------------
谢谢各位啦
----------------解决方案--------------------------------------------------------
回复 8# 的帖子
我运行时也是这样
----------------解决方案--------------------------------------------------------
的确存在越界问题,但不仅仅是。让我无法理解的是,就像楼主说的,去掉0,加上任意个字符都可以运行,或者在0的前面加上任意字符都可以,只是结果后面会接着“abnormal program termination”
  
例如
char xx[]="1,2,3,4,5,48,8,9,1";
或char xx[]="1,2,3,4,8,9,10,0";
其余都不改,则都可以!!!
我认为,是不是正好这组数据将某个指令改了,造成死循环,打个比方,例如转义符‘\0’系统认为是结束。
而数组越界,系统缓存器在一定大小内可以接受,只是会出现“abnormal program termination”提示,
所以,我想死循环不是数据越界造成的,但不知问题出在哪里,哪位能解答一下呢?

----------------解决方案--------------------------------------------------------
的确很棘手~~~个人以为和编译器有关
----------------解决方案--------------------------------------------------------
把你给的程序在我电脑上一运行,我用的编译器是visual c++,并没有出现死循环,但是运行可执行程序时会出现应用程序错误,也能给出结果.
只要给字符数组分配足够的空间,当然能顺利得到结果.
在没有给字符数组指定宽度时,通过我的观察好像只给字符数组分配了四个字节.
造成后面都越界.所以造成应用程序错误.
----------------解决方案--------------------------------------------------------
abnormal program termination
程序异常终止.
----------------解决方案--------------------------------------------------------
你们这个问题讨论了很久啊,数组里最后一个数字是0,就和字符串结尾"\0"是一样的,所以字符串数组的长度固定
再往里添内容就会越界了
----------------解决方案--------------------------------------------------------
不只是0 的问题,其他是数字也出现错误~~
----------------解决方案--------------------------------------------------------
回复 9# 的帖子
9楼的不得不佩服一下
如果是你翻译的话,
----------------解决方案--------------------------------------------------------
  相关解决方案