首页
社区
课程
招聘
[旧帖] PDWORD Addr的计算问题 0.00雪花
发表于: 2010-1-8 04:47 3744

[旧帖] PDWORD Addr的计算问题 0.00雪花

2010-1-8 04:47
3744
PDWORD Addr
Addr,(Addr + 1)
为什么(Addr + 1),在内存区域,相当于移动了4个字节?

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

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 109
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
为什么就不知道了。因为这个是c里面的规定吧。应是编译器根据你的是什么指针而加那个类型的大小。

21:       dw=12;
0040B599   mov         dword ptr [ebp-120h],0Ch
22:       pdw=&dw;
0040B5A3   lea         eax,[ebp-120h]
0040B5A9   mov         dword ptr [ebp-11Ch],eax
23:       pdw=pdw+1;
0040B5AF   mov         ecx,dword ptr [ebp-11Ch]
0040B5B5   add         ecx,4
0040B5B8   mov         dword ptr [ebp-11Ch],ecx

也看不到有别的代码他是为什么要加4的,但是他就是直接加4
2010-1-8 08:24
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
(Addr + 1) 在C语言里相当于addr + sizeof(DWORD)
2010-1-8 08:39
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
这就是C语言语法,因为Addr是DWORD指针
2010-1-8 08:40
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
呵呵,记得给分
2010-1-8 08:41
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
6
不光是DWORD指针, 结构体指针也是这样的
比如一个Struct 指针p
你 执行 p = p + 1;指针实际上是移动了一个结构体大小的位置
C 语法
2010-1-8 08:53
0
雪    币: 208
活跃值: (148)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
若p是类型T的指针,p+1相当于p移动了sizeof(T)个字节
2010-1-8 09:18
0
雪    币: 141
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
多谢,这个问题,迷惑了我。
2010-1-8 18:29
0
游客
登录 | 注册 方可回帖
返回
//