为什么内存地址会在运行时发生变化

Why do memory address change on runtime

我用 C#.Net 编写了一个应用程序,其中包含一个简单的双变量,该变量在 运行 时间发生变化。我的目标是从另一个程序中读取这个变量。所以我用 ArtMoney 查看了内存以获得内存地址。但是我的变量地址在 运行 时间发生变化。谁能告诉我为什么?

在两次尝试中,地址都更改了两次,然后稳定下来。地址的前两个字节在两次尝试中都发生了相同的变化,但接下来的字节在应用程序的每次启动时都不同。

"because it is allowed to"; .NET 不保证内存中的内容,除非您(或者):

  • 分配托管内存并固定它
  • 分配非托管内存

并且您会注意到,在这两种情况下, 运行s 之间都没有固定 - 它仅在 之间固定运行.

的持续时间

基本上:找到一种不同的方式在进程之间进行通信。原始内存偏移量查找:此处不起作用。