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

Bru*_*usi 1 .net c# memory memory-address

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

内存上的位置

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

  • 为什么地址在运行时改变了两次?
  • 怎么我确定地址的"偏移"?

Mar*_*ell 10

"因为它被允许"; .NET不会保证内存中的内容,除非您(或者):

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

并且你会注意到在这两种情况下,它运行之间并不固定- 它只运行期间固定.

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