首页
社区
课程
招聘
[旧帖] [求助]指针的地址一直不改变的可能原因? 0.00雪花
发表于: 2008-7-29 04:59 3777

[旧帖] [求助]指针的地址一直不改变的可能原因? 0.00雪花

2008-7-29 04:59
3777
由于目标程序有大量的DLL调用,故看得有点头晕

1.其中一个DLL的一个函数每次被调用时,他的参数一直不变(都是指针),而这些参数又好像不

是全局变量;另外,这些参数地址都是0012开头,与DLL的动态地址前4位又不同,查看了一下,

没有一个加载的DLL的前4位与它相同。

2.这些参数又似乎是某个对象实例的变量,因为都和 this 发生过关系

总之,有点晕。请大家说说有可能发生此事的原因,不胜感激!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 328
活跃值: (10)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
2
是在堆栈上分配的对象吧,也就是局部变量
2008-7-29 06:12
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
一个函数在每次被主程序调用时,那它的局部变量在堆栈的绝对地址会一直不变吗?

这个函数确实用 __alloca_probe()分配了大量的堆栈空间
2008-7-30 00:17
0
雪    币: 214
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
也可能是在堆上分配的,如用new分配一次
2008-7-30 16:45
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我查过没有看到new()

另外,我主要想知道 指针的绝对地址一直不改变的原因?
2008-7-30 22:53
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
由于目标程序有大量的DLL调用,故看得有点头晕

1.其中一个DLL的一个函数每次被调用时,他的参数一直不变(都是指针),而这些参数又好像不

是全局变量;另外,这些参数地址都是0012开头,与DLL的动态地址前4位又不同,查看了一下,

没有一个加载的DLL的前4位与它相同。

2.这些参数又似乎是某个对象实例的变量,因为都和 this 发生过关系

总之,有点晕。请大家说说有可能发生此事的原因,不胜感激!
2008-7-31 16:59
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
有没有人知道
2008-8-2 00:13
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
有没有人知道
2008-8-4 13:54
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
0x0012xxxx很明显是栈上的地址啊!!!
可能是一个“一直”存在的局部变量,比如MFC的“对话框”框架下的CWinApp::m_pMainWnd,又如以下这种都有可能啊。
int main(int, char**)
{
     CxxObject object;   //指向object的地址就不可能会变
     object.Init();
     object.Run();
     object.Exit();
}
2008-8-4 17:40
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
同意楼上,每次最先定义的几个局部变量,其地址每次程序打开都不会改变。
2008-8-18 14:44
0
游客
登录 | 注册 方可回帖
返回
//