游戏开发论坛

 找回密码
 立即注册
搜索
楼主: 轰隆隆

刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

[复制链接]

7

主题

67

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2006-1-22 23:39:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

楼主的帖子也让我等大跌眼镜~呵呵。。。
建议楼主先找本C语言入门的书看看吧。。。

1

主题

7

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2006-1-23 11:11:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

嗯,是啊,你申请了一个数组不对它进行初始化的话,它就会在里面乱填一些东东,
其实最后还是有一个'\0'在里面的,那你用strlen的时候自然是数到那个地方才结束.
因此你得到67也就不奇怪了,系统会在初始化的数组里面填表上-52,替你初始化.
这就是使用数组不初始化的后遗症......

2

主题

177

帖子

177

积分

注册会员

Rank: 2

积分
177
发表于 2006-1-23 14:53:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

好久没这么开怀地笑过了,笑的不是楼主的无知,而是在无知的情况下面对错误时把责任完全推到他人身上的那种理直气壮
楼主啊,万事万物都是相通的,建议你先去学好做人的道理

14

主题

245

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
QQ
发表于 2006-1-23 15:06:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

我就不说什么了。

1

主题

47

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2006-1-23 15:16:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

你们都上了楼主的当了。。。。


明显是来娱乐的~~-__-!

14

主题

251

帖子

251

积分

中级会员

Rank: 3Rank: 3

积分
251
发表于 2006-1-23 21:19:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

大家都说这么多了,我也不说什么了

36

主题

109

帖子

109

积分

注册会员

Rank: 2

积分
109
 楼主| 发表于 2006-1-24 10:47:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

这我就更纳闷了,系统应该自动为没有初始化的变量赋于默认值的。

char a[61]; 也就等于相当于为数组的每个值赋予0,也就是61个数组元素的值都是零,怎么能说是乱值呢?

我编程有相当一段时间了,任何不赋值的变量系统都是会赋值的。int 型的赋默认值0;bool型的赋默认值false;char型的赋默认值0; 所以大家说是因为没有初始化的原因,我不能认同。这是很基础的东西。

还有23楼的朋友,我绝对没兴趣来这里娱乐,我是来说我认为有趣的现象的。

3

主题

79

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2006-1-24 11:45:00 | 显示全部楼层

Re: Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

轰隆隆: Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

strlen()函数的用途是求字符串的长度(不包括‘\0’)的长度,所以用来求字符串char a[64]的长度有什么不对吗...

微软的东西是有bug,但是还轮不到你这种水平的人来说和发现。很负责任的告诉你:你以后再发现微软的"bug"别再发上来搞笑了,仔细检查自己的程序!

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2006-1-24 11:46:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。


sizeof

如果按照你说的,自动为零. 那么用strlen结果为0.因为数组的元素排列是: [0000000...00(61)]
不觉得自己说的情况不足以支持你的意图 "61" 吗?

运行时只会初始静态的变量. 在栈上产生的变量不会被初始,他默认值是栈上的残留值.
这也是为何要反复强调初始化指针的原因, 如果指针被赋值为0是相对安全的.

36

主题

109

帖子

109

积分

注册会员

Rank: 2

积分
109
 楼主| 发表于 2006-1-24 11:55:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

运行时只会初始静态的变量. 在栈上产生的变量不会被初始,他默认值是栈上的残留值.
这也是为何要反复强调初始化指针的原因, 如果指针被赋值为0是相对安全的.

--------------------------------

原来问题在这里,我说怎么是奇怪的结果,原来是局部变量的关系,局部变量在栈上生成,所以没有被初始化。嗯,谢谢老兄的提醒。太不好意思了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 10:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表