我想将进程内存的某些部分映射为字节数组。 怎么做?
我有字节数组:
byte AmmoBytes[3]
我希望这个数组从地址0xXXXXXXX开始; 怎么做?
答案 0 :(得分:5)
byte (& a)[3] = *reinterpret_cast<byte (*)[3]>(0xDEADBEEF);
答案 1 :(得分:3)
byte * AmmoBytes = (byte *) 0xXXXXXXXX;
答案 2 :(得分:2)
这是不安全的,但你可以说
byte * AmmoBytes = (byte *) 0xXXXXXXXX
答案 3 :(得分:0)
一般来说,你无法可靠地做到这一点。
如果0xXXXXXXX
表示硬件地址,那么您需要编写设备驱动程序以获得对内存的内核访问权。
如果它是正常的内存地址,则无法保证它映射到有效的内存位置,并且您很可能会使程序崩溃。
你真的想在这做什么?
答案 4 :(得分:0)
我会使用常量指针声明内存:
byte * const AmmoBytes = (byte * const) 0xFFFF000;
将指针声明为常量有助于编译器检测错误,例如错误地更改指针值而不是指针指向的值。