读取地址的值

jma*_*erx 4 c++

我正在尝试创建一个读取某个地址值的程序.我有这个:

int _tmain(int argc, _TCHAR* argv[])
{
    int *address;
    address =   (int*)0x00000021;
    cout << *address;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但这会产生读取违规错误.我究竟做错了什么?谢谢

Ign*_*ams 5

它读取进程自己空间中该地址的值.如果要读取另一个进程的空间或物理内存,则需要使用其他方法.


Jam*_*lis 2

您只能使用指向实际对象的指针。

如果您在地址处没有对象0x00000021,则这将不起作用。

如果您想在免费存储(堆)上创建一个对象,您需要使用new

int* address = new int;
*address = 42;
cout << *address;
delete address;
Run Code Online (Sandbox Code Playgroud)

  • @user146780:调试器通常使用特定于操作系统和特定于环境的挂钩来从进程的虚拟地址空间或物理内存中的给定地址读取数据。 (2认同)