【发布时间】:2021-01-07 15:58:49
【问题描述】:
我不知道这是可能的,可能不是 - 但也许
我想要达到的效果如下,仅适用于n 大小的字符数组:
*(__int64*)(address) = 0x1337;
这适用于__int64 或__int32 或float 以及更多类型,我想做的是
*(char[8]*)(address) = [0x37, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
【问题讨论】:
-
这是你想要的吗? stackoverflow.com/a/35745703/2602718
-
确实如此,但我想通过强制转换而不是
memcpy来实现 -
强制转换将成为未定义行为的路径;
std::memcpy是支持这种恶作剧的方式。 -
要转换为指向数组的指针,可以使用
(char (*)[8])address。但不要。
标签: c++ arrays pointers assembly char