int a, hex = 0x573285;
int * pA; // Pointer?
*pa = &a; // &a = the hexadecimal-memory location and *pa is now going to point to that place.
所以我想:
让我们说可以写一些这样的东西,例如:
(*hex) = 5; or whatever the hexadecimal number is
更改内存的值?
如果我有一个程序(我不知道一个),它向我展示了我的游戏使用的所有内存位置。 如果我改变了程序中的值,然后回到我的游戏或者什么,那么它会改变吗? (如果游戏正在运行)。
并且是(*this) the same as (this*)
?
编辑: 这工作
int a = 5, b=0x28ff1c;
int* c = &a;
cout << *(c);
但不是:
int a = 5;
int * b=0x28ff1c;
int * c = &a;
cout << *(b);
也不:
int a = 5, b=0x28ff1c;
int * c = &a;
cout << *(b);
你看到我想要做什么吗?
答案 0 :(得分:2)
让我们说可以写一些这样的东西,例如:
(*hex) = 5; or whatever the hexadecimal number is
更改内存的值?
标准不一定能保证能力,但在许多系统上你可以写:
*((int *) hex) = 5;
将“hex
”转换为指针指向int
,然后取消引用该指针并将int
设置为5
- 当然,提供的是hex
中的值实际上是指您可以写入的某些内存位置。但不用说,你不应该在任何你打算使用的程序中执行此操作。
如果我有一个程序(我不知道一个),它向我展示了我的游戏使用的所有内存位置。如果我改变了程序中的值,然后回到我的游戏或者什么,那么它会改变吗? (如果游戏正在运行)。
在嵌入式系统中通常就是这种情况,但由于使用virtual memory和virtual address spaces,在具有正常操作系统的现代机器上通常不会出现这种情况。发生的事情是,一个进程通常不会知道它正在使用的内存的真实物理内存位置(如果有的话);相反,存储在指针中的值是“虚拟的”,并且与进程有关。两个进程'0x12345678
完全无关,可以映射到完全独立的内存位置。