7

私はこのようなことをすることが可能かどうか疑問に思いました:

unsigned int address = 0x0001FBDC; // Random address :P
int value = *address; // Dereference of address

つまり、メモリ内の特定のアドレスの値を取得することは可能ですか?

ありがとう

4

1 に答える 1

20

あなたはそれをこのように書くことができ、そして書くべきです:

#include <cstdint>

uintptr_t p = 0x0001FBDC;
int value = *reinterpret_cast<int *>(p);

p整数を指す保証がない限り、これは未定義の動作であることに注意してください。標準のオペレーティングシステムは、アドレス指定することを予期していなかったアドレスにアクセスしようとすると、プロセスを強制終了します。ただし、これは独立したプログラムでは一般的なパターンである可能性があります。

#include <stdint.h>(以前のバージョンのC ++はとと言うべきintptr_tです。)

于 2012-09-06T10:41:21.527 に答える