|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求解,为什么陷入死循环?
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1007
人关注过本帖
标题:
求解,为什么陷入死循环?
只看楼主
加入收藏
azzbcc
来 自:江西财经大学
等 级:
贵宾
威 望:
81
帖 子:3293
专家分:12919
注 册:2012-11-4
第
11
楼
收藏
得分:3
一步步debug,你会发现 a[10] = 0的执行结果是 i = 0
[fly]存在即是合理[/fly]
2013-06-02 21:31
举报帖子
使用道具
赠送鲜花
YJ_Hao
等 级:
黑侠
威 望:
1
帖 子:215
专家分:609
注 册:2013-3-22
第
12
楼
收藏
得分:3
debug了一下,凑巧a[10]的地址刚好是i的地址,a[10]等于0,就是i 等于0.你说会不会死循环?你把a[i]的值赋的大于10就不会死循环了!哈哈哈
2013-06-02 21:39
举报帖子
使用道具
赠送鲜花
lzj12530
等 级:
蝙蝠侠
威 望:
2
帖 子:264
专家分:841
注 册:2013-3-28
第
13
楼
收藏
得分:3
操作系统资源死锁呗
C++菜鸟
2013-06-02 23:07
举报帖子
使用道具
赠送鲜花
IBQ128
等 级:
新手上路
帖 子:1
专家分:3
注 册:2013-3-24
第
14
楼
收藏
得分:3
这是我在c陷阱与缺陷里看到的原话
for语句的比较部分本来是i<10,却写成了i<=10,因此实际上不存在的a[10]被设置成0,也就是内存中的数组a之后的一个字(word)的内存被设置为0.如果按照内存地址递减的方式来给变量分配内存,那么内存中数组a之后的一个字(word)实际上是分配给力整型变量i.此时本来循环计数器i的值为10,循环体内将不存在的a[10]设置为0,实际上却是将计数器i的值设置为0,这就陷入了一个死循环
2013-06-03 12:48
举报帖子
使用道具
赠送鲜花
wsws23
等 级:
论坛游侠
帖 子:105
专家分:107
注 册:2012-3-13
第
15
楼
收藏
得分:3
学到了
2013-06-03 12:55
举报帖子
使用道具
赠送鲜花
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6815
专家分:42393
注 册:2010-12-16
第
16
楼
收藏
得分:3
以下是引用
赵疯子
在2013-6-2 19:51:54的发言:
这程序让我很郁闷,不知道你们遇到过没有,我用的编译器是VC++6.0,求高手#define N 10
#include
main()
{
int i;
int a[N];
printf("开始?");
for(i=0;i<=N;i++)
a=0;
printf("结束?");
}
在release版本中 a[10]是数组越界了,而a【10】的的内存赶海就是i的。
这个问题在很多比较好的书籍都提到过。如果你明白内存堆栈的原理,你就知道这个问题所在了
我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-06-03 13:40
举报帖子
使用道具
赠送鲜花
赵疯子
来 自:dream
等 级:
蝙蝠侠
威 望:
2
帖 子:365
专家分:737
注 册:2013-5-5
第
17
楼
收藏
得分:0
谢谢各位,debug看到的就是i在无限0-10循环,谢谢现在明白了
2013-06-03 18:47
举报帖子
使用道具
赠送鲜花
17
2/2页
1
2
快速回复:
求解,为什么陷入死循环?
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.037070 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved