游戏开发论坛

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

请问高手一个调试过程中看指针值的问题!

[复制链接]

15

主题

79

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2006-9-18 12:40:00 | 显示全部楼层 |阅读模式
大家好:
请问一个关于指针的值的问题,有时候指针有值,但是这个值是不存在或者说是不对的,或者是野指针什么的(我不知道该怎么表达,暂且这样说),怎么样知道他是不对的,比如说指针的值是不是有个范围什么的,超过这个就一眼能看出,比如负值!请高手赐教!我不知道我表达的对不对,我是新手

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2006-9-18 13:13:00 | 显示全部楼层

Re:请问高手一个调试过程中看指针值的问题!

如果指针被赋值了,光看其值就能一眼看出是错是对,那也太厉害了吧。指针的值就是内存地址,没有负地址,内存地址那有负的?内存地址是用一个32位无符号整数在表示的(限于目前的32位系统,听说VISTA很快就上市了,那时可能就会用到64位地址了)。使用指针确实有一些注意事项或良好习惯,比如动态分配后要释放等,唉,所有书上都有这些,不灌了。

30

主题

422

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
发表于 2006-9-18 13:31:00 | 显示全部楼层

Re:请问高手一个调试过程中看指针值的问题!

我的一些调试经验:

首先看值的范围,比如特别小(0指针、小于0x100等与目标机有关)的,特别大的,还有如0xcdcdcdcd,0xfeeefeee等这些特征表示指针无效。(调试时0xcdcdcdcd一般是该指针未初始化,0xfeeefeee则表示指针所在地址被释放)
还可以参考比较其他变量的地址,如全局变量、局部变量,堆的地址等,如果指针所指也是全局变量,则应当与其他全局变量地址接近。依次类推。
如果看指针的值看不出特殊情况。则需要查看改地址内容:
如果存在类对象虚函数表,则可以通过该表地址确认是否是类型一致。
如果内容是0xfeeefeee则表示该对象空间已经被释放
堆内分配的空间还可以查看所指区域前的数据块头部,其中应当包含数据块大小,下一数据块地址等信息。

15

主题

79

帖子

79

积分

注册会员

Rank: 2

积分
79
 楼主| 发表于 2006-9-19 13:41:00 | 显示全部楼层

Re:请问高手一个调试过程中看指针值的问题!

非常感谢!!!

0

主题

202

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2006-9-20 02:08:00 | 显示全部楼层

Re:请问高手一个调试过程中看指针值的问题!

不要依赖于什么0xfeeefeee 0xdcdcdcdc 。 不好的做法

15

主题

79

帖子

79

积分

注册会员

Rank: 2

积分
79
 楼主| 发表于 2006-9-20 08:05:00 | 显示全部楼层

Re:请问高手一个调试过程中看指针值的问题!

那我依赖什么呢?经验吗?可是我没有经验呀?工作都不好找

6

主题

95

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2006-9-21 09:06:00 | 显示全部楼层

Re:请问高手一个调试过程中看指针值的问题!

最好赶快学用智能指针(看boost的smart__ptr)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 11:33

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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