在Windows上SIZE_T和void*之间进行转换

lan*_*ery 1 c++ windows size-t

我已经读过stackoverflow上的几篇帖子,比如size_t和uintptr_t,sizeof(size_t)== sizeof(void*)总是如此?并且理解根据C++标准,SIZE_T和void*的大小可以不同,以考虑诸如16位分段体系结构的体系结构.

所以我想将我的场景平台限制为Windows,无论是x86,x64,WoA(Windows on Arm):在Windows上,如果我在malloc中创建一个void*类型的指针,我想做指针 - 在将它传递给memcpy或其他东西之前的算法,我必须这样:

void* p = malloc(100);
memcpy(reinterpret_cast<void*>((reinterpret_cast<SIZE_T>(p) + offset), p2, 100);
Run Code Online (Sandbox Code Playgroud)

这看起来非常乏味,特别是如果你不得不在各处乱扔这种类型的铸件(我正在处理各种偏移).鉴于这是在Windows平台上,我想知道是否有一些简化可以减少这种类型的样板代码?

谢谢.

Meh*_*dad 7

把它投射到unsigned char *并用它做指针算术.