为什么内存地址在运行时更改

时间:2017-06-13 12:27:33

标签: c# .net memory memory-address

我在C#.Net中编写了一个带有简单双变量的应用程序,它在运行时被更改。我的目标是从另一个程序中读取此变量。所以我用ArtMoney查看内存以获取内存地址。但我的变量的地址在运行时更改。谁能告诉我为什么?

Memory on the locations

在两次尝试中,地址都改变了两次然后稳定下来。地址的前两个字节在两次尝试时都相同但下一个字节在应用程序的每个开始时都不同。

  • 为什么地址在运行时会改变两次?
  • 我如何确定"偏移"地址?

1 个答案:

答案 0 :(得分:10)

“因为它被允许”; .NET不会对内存中的内容做任何保证,除非您(或者):

  • 分配托管内存,将其固定
  • 分配非托管内存

并且您会注意到,在这两种情况下,运行之间的都没有固定 - 它只在运行期间修复

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