特定地址c ++处的字节数组

时间:2011-03-04 13:59:33

标签: c++ arrays memory bytearray

我想将进程内存的某些部分映射为字节数组。 怎么做?

我有字节数组:

byte AmmoBytes[3]

我希望这个数组从地址0xXXXXXXX开始; 怎么做?

5 个答案:

答案 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;

将指针声明为常量有助于编译器检测错误,例如错误地更改指针值而不是指针指向的值。