我有一个开放的 C 程序,其地址中存储了一个随机 var a=20 。假设是 1000。我希望我的 C# 程序能够读取这个地址 (1000) 值。因此,在我的 C# 程序中,显示值 20。我已经有了该地址,但我不知道如何查看该地址值,有什么帮助吗?
int *ptr = (int *) 0x67a9;
*ptr = 0xaa55;
我发现了这个 C 代码,认为它会有所帮助。
我使用的是 Visual Studio 2015。
最佳答案
所以您希望 C 在内存地址 1000 中存储一个值,并且希望 C# 程序能够读取内存地址 1000 并看到相同的值?
不幸的是(对你来说)它不是这样工作的 - 每个 exe 都有自己的地址空间,因此每个 exe 中的地址 1000 将映射到不同的物理地址,并且你不应该在该级别上乱搞.
您可以使用多种进程间通信(IPC)方法来实现您想要的(例如共享内存)
编辑
David Heffernan 正确地指出,注释中的 ReadProcessMemory
确实允许您将内存区域从一个进程映射到另一个进程。我必须承认我不知道!仍然存在一个问题,你不能只使用内存地址 1000 - 你必须以某种方式从一侧到另一侧获得一个有效的地址,所以我不太确定它对于一般情况有多大用处。
这可能会给您更多提示:sharing memory between two applications
关于c# - 用指针c#指向某个地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35568329/