visual studio screenshot with memory window open
嗨,我想知道是否有人可以给我一些关于某事的信息?
我在exe1中有这段代码:
int number = 100;
int* p = &number; // p = 0x0050f594
p指向内存地址0x0050f594
在另一个程序exe2中,我有这个:
int* p = (int*)0x0050f594;
所以对我来说,exe2中的p指向exe1中的变量号。
我认为这与在自己的地址空间中运行的不同应用程序有关,但我仍然想知道如何使exe2&sp; sp指针指向exe1中的数字变量?
答案 0 :(得分:3)
在现代操作系统中,流程是孤立的。每个进程都有自己的内存。操作系统负责将进程内存地址(当进程想要读取或写入内存时)转换为物理地址。
如果您没有操作系统,或简单的(嵌入式平台),或者您正在编写内核模式驱动程序,则可以直接访问物理内存。
对于x86处理器,https://en.wikipedia.org/wiki/Protected_mode和https://en.wikipedia.org/wiki/Real_mode的阅读可能会很有趣。
答案 1 :(得分:0)
好的,这里需要的是进程间通信,通常称为(IPC)。这在Linux或Windows中都可用。因此,通过使用任何IPC机制,您只需将值传输到其他进程,然后就可以执行所需的操作。
这不是你问题的直接答案,但你可以随时朝这个方向前进并检查。
希望这有帮助。