-1

私はC#でこの実装をしています。

私が間違っていない場合は、次の目的で使用されます。allocatedObjectによって示されるメモリ位置をサイズバイト数でオフセットし、メモリポインタをInt64に変換する

short size = getSize();

IntPtr allocatedObject;

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

C ++でこれを実現するにはどうすればよいですか:IntPtr(void *allocatedObject;)のメモリ内の位置とメモリポインタをInt64に変換します。

4

1 に答える 1

2

64ビット整数を表す型があると仮定すると、int64_t最初にポインタをへのポインタchar(定義上はsizeof = 1)にキャストし、次にサイズでオフセットしてから、もう一度へのポインタにキャストしますint64_t

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

これは、サイズがないため、ポインターを使用してポインター演算を実行できないためですvoid。または、reinterpret_casta std::intptr_t(任意のポインターを含むのに十分な大きさの整数)へのポインターをサイズで増やしてから、へのポインターにキャストすることもできます int64_t

于 2012-05-15T23:31:04.607 に答える