我在C#中实现了这个实现:
如果我没有错,它用于:通过大小字节数偏移allocateObject指示的内存位置,并将内存指针转换为Int64
short size = getSize();
IntPtr allocatedObject;
long posInMemory = allocatedObject.Offset(size).ToInt64();
如何在C ++中实现这一点:IntPtr(void *allocatedObject;
)的内存位置并将内存指针转换为Int64。
提前致谢!
答案 0 :(得分:2)
假设您有int64_t
类型表示64位整数,您首先将指针强制转换为指向char
的指针(根据定义具有sizeof = 1
),然后将其偏移为大小,然后再次将其转换为指向int64_t
的指针。
static_cast< int64_t* >( static_cast< char* >( allocatedObject ) + size )
那是因为你不能用void
指针做指针算术,因为它没有大小。或者,您可以reinterpret_cast
指向std::intptr_t
(一个足以包含任何指针的整数)的指针,按大小增加它,然后转换为指向int64_t
的指针。