小编Mur*_*yev的帖子

C - 为什么在进行指针运算时转换为uintptr_t vs char*

我正在编写一个程序,我必须修改目标进程内存/读取它.

到目前为止,我使用void*来存储地址并将其转换为char*如果我需要更改它们(添加偏移量或修改一般)

我听说过在stdint.h中定义的那个类型,但我没有看到使用它进行char*转换的指针算法的差异(这对我来说似乎更C89友好)

所以我的问题是:我应该将哪两种方法用于指针算法?在任何情况下我是否应该考虑使用uintptr_t而不是char*?

编辑1

基本上我只需知道这是否会产生

0x00F00BAA hard coded memory adress in target
process
void* x = (void*)0x00F00BAA;
char* y = (void*)0x00F00BAA;
x = (uintptr_t)x + 0x123;
y = (char*)y + 0x123;

x == y?
x == (void*)0x00F00CCD?
y == (void*)0x00F00CCD?
Run Code Online (Sandbox Code Playgroud)

c pointers char pointer-arithmetic

4
推荐指数
1
解决办法
2481
查看次数

标签 统计

c ×1

char ×1

pointer-arithmetic ×1

pointers ×1