所以最近我一直在处理 WinAPI WriteProcessMemory
,ReadProcessMemory
它们都将LPVOID
其作为第二个参数,即我们要读取的另一个进程的内存中的实际地址。
考虑到这一点,这个整数到指针的转换是否是正确的 C++ 代码(没有未定义的行为等):
#include <windows.h>
int main()
{
WriteProcessMemory(/*...*/,
//want to read from memory address 0x1234 in the target process
reinterpret_cast<void*>(static_cast<uintptr_t>(0x1234)),
/*...*/);
return 0;
}
AFAIK,标准说这uintptr_t
是一个整数类型,它能够在不改变指针值的情况下保存指针。由于它是一个整数,我应该能够在其中存储 0x1234。该标准还说reinterpret_cast
ing an uintptr_t
to avoid*
也将保持该值不变。