游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1754|回复: 6

很诡异的一个现象...在做八叉树场景的时候遇到的...

[复制链接]

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
发表于 2008-4-12 20:19:00 | 显示全部楼层 |阅读模式
为了不失一般性,好像有这么一个奇怪的现象

一个类A里面包含另外一个类B的实例BInst,在成员列表里面是这样的顺序

class A

{

   protected:

            B         m_BInst;

            DWORD  m_dwValue

}

在类A的构造函数里面将m_dwValue赋值0

然后在类A一个每帧调用的update函数里面 :

m_dwValue++; //此时m_dwValue应该是1;

m_BInst.func(); //这里func是类B的一个公共函数,里面有一大堆的计算;但是和A里面的数据一点关系都没有

//经过上面一句之后,m_dwValue的值竟然变为了0!!



据我目前经验得, 以上现象发生有两个必要条件:

一是类A里面必须是类B的实例而不是指针,

二是在类A里面数据成员的顺序必须是先m_BInst再m_dwValue.



很奇怪的问题...原因是什么呢??有么有高人路过解释下.........

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2008-4-12 20:52:00 | 显示全部楼层

Re:很诡异的一个现象...在做八叉树场景的时候遇到的...

no no no, 你自己的问题,不要怪编译器。

33

主题

544

帖子

554

积分

高级会员

Rank: 4

积分
554
发表于 2008-4-12 20:55:00 | 显示全部楼层

Re:很诡异的一个现象...在做八叉树场景的时候遇到的...

m_BInst.func()

不出意外的话,,这函数里面要检查下,可能有内存越界情况

33

主题

544

帖子

554

积分

高级会员

Rank: 4

积分
554
发表于 2008-4-12 21:09:00 | 显示全部楼层

Re:很诡异的一个现象...在做八叉树场景的时候遇到的...

还有个简单的方法就是加个内存数据断点,就能知道什么时候哪个函数改变了那个值

22

主题

144

帖子

193

积分

注册会员

Rank: 2

积分
193
发表于 2008-4-12 22:39:00 | 显示全部楼层

Re:很诡异的一个现象...在做八叉树场景的时候遇到的...

楼上的的说的很对,不过如果越界的话,有可能是个很奇怪的值。你看看B的最后一个成员数据被改的时候是被干什么了,是否存在越界。

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
 楼主| 发表于 2008-4-13 10:24:00 | 显示全部楼层

Re:很诡异的一个现象...在做八叉树场景的时候遇到的...

泪奔……感谢楼上各位……经检查,确实B的func里面有数组越界问题……
再问一下,内存数据断点该怎么加?就是普通的断点吗?

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2008-4-13 12:26:00 | 显示全部楼层

Re:很诡异的一个现象...在做八叉树场景的时候遇到的...

设置一下覆写命中就可以了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 21:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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