-1

我在 C# 中有这个实现。

如果我没记错的话,它用于:通过 size 字节数偏移由allocatedObject指示的内存位置并将内存指针转换为Int64

short size = getSize();

IntPtr allocatedObject;

long posInMemory = allocatedObject.Offset(size).ToInt64();

如何在 C++ 中实现这一点:IntPtr ( void *allocatedObject;) 在内存中的位置并将内存指针转换为 Int64。

4

1 回答 1

2

假设您有一个int64_t表示 64 位整数的类型,您首先将指针转换为指向的指针char(根据定义具有sizeof = 1),然后将其偏移大小,然后再次将其转换为指向的指针int64_t

static_cast< int64_t* >( static_cast< char* >( allocatedObject ) + size )

那是因为你不能用void指针做指针算术,因为它没有大小。或者,您可以reinterpret_cast将指向 a 的指针std::intptr_t(一个大到足以包含任何指针的整数),将其增加大小,然后强制转换为指向 int64_t.

于 2012-05-15T23:31:04.607 回答