首页 > 解决方案 > 在 BYTE 数组中存储 BYTE* 地址

问题描述

我有一个 type 变量BYTE*,其中来自内存的地址是:BYTE* address = (BYTE*)0x4A4B4C4D和一个BYTE Array5 位数字,我想在其中完全复制地址。BYTE* jmp = new BYTE[5] {0xE9, 0x00, 0x00, 0x00, 0x00}这个数组应该代表一个 32 位跳转,我必须将地址复制到最后 4 位,因为它有 4 个字节大。我以前试过memcpy,但似乎memcpy只是复制内存中那个地址的字节,这就是我不想要的。所以我的目标是有一个看起来像这样的字节数组BYTE[5] {0xE9, 0x4A, 0x4B, 0x4C, 0x4D}

编辑:

BYTE* jmp = new BYTE[5] {0xE9, 0x00, 0x00, 0x00, 0x00};

BYTE* address = (BYTE*)0x4A4B4C4D;

memcpy((jmp + 1), &address, 4);

delete[] jmp;

标签: c++arrayspointersbyte

解决方案


你非常“指针重”。

BYTE jmp[5] = {0xE9};
uint32_t address = 0x4A4B4C4D;
memcpy(jmp + 1, &address, 4);

或者,根据字节顺序,

BYTE jmp[5] = {0xE9};
uint32_t address = 0x4D4C4B4A;
memcpy(jmp + 1, &address, 4);

推荐阅读