游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2263|回复: 7

关于对:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有--

[复制链接]

12

主题

88

帖子

133

积分

注册会员

Rank: 2

积分
133
发表于 2006-2-10 13:39:00 | 显示全部楼层 |阅读模式
这贴本要回复到原贴的,不过我确实有几个需要大家帮我证实的问题,在此谢过了

VC6.0记得在早的版本中确实栈用是随机值,不过这个问题是不是在VC7.0中已经不存在了

从我现有代码中看,好像VC7.0中对这些东西都做了初始化,CHAR即为'\0',int即为0.定义在类及STRUCT中的也一样.
等等.不过如果是这样,是怎么做的呢?类似JAVA?我做个猜测,每个这样的变量都有一个初始化不妨我叫它初始化函数.定义这样的变量都会自动调用它的初始化过程,如果这样的话,在类中的那些变量初值也得到解释,也就是说.我们以后可以安全的不必非要做初始话(指针除外)

上面是我的猜测,呵呵,希望有人能给我指正,谢谢.

5

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
QQ
发表于 2006-2-10 13:42:00 | 显示全部楼层

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

无语!

12

主题

88

帖子

133

积分

注册会员

Rank: 2

积分
133
 楼主| 发表于 2006-2-10 13:46:00 | 显示全部楼层

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

说说你的意见嘛..好坏我都会听.偶是新手,很多不懂,呵呵

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2006-2-10 21:16:00 | 显示全部楼层

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

vc7没有对它们做初始化......除非是全局变量。
你说变量要初始化,引用不就行了吗?!int iiii=0;就在声明时或之后加个=号和一个数。对于自定义类和结构,是有构造函数的!
class TYPE
{
int a;
char b;
TYPE()//这个就是构造函数
{
a=0;
b=0;//0即'\0'
}
};

11

主题

49

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2006-2-10 21:57:00 | 显示全部楼层

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

这是我以前回的一个帖子:


全局和静态变量系统自动初始化,原因在于要把它们写入.exe文件的数据段,必须有一个值才行。

局部变量和类中的变量不会自动初始化,因为它们是在程序运行后在堆栈段建立的,原来内存中的残留值就成了他们的初值。

c++一切从效率出发,所以不会帮你初始化这片区域,以免在不必要初始化的时候降低效率。

还有用new, malloc动态创建的变量是运行时在堆区创建的,不会初始化,理由同局部变量。

22

主题

191

帖子

217

积分

中级会员

Rank: 3Rank: 3

积分
217
QQ
发表于 2006-2-11 15:59:00 | 显示全部楼层

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

不知所云啊

6

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2006-2-12 01:37:00 | 显示全部楼层

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

不想说什么

12

主题

88

帖子

133

积分

注册会员

Rank: 2

积分
133
 楼主| 发表于 2006-2-13 16:43:00 | 显示全部楼层

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

呵呵,谢谢诸位,没注意到我的测试都是在DEBUG版下运行的,debug版会对这些变量初始化而RELEASE版做了优化,不会对这些变量初始化,作为堆或栈中的都是内存中的残余值..
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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