如何在vb.net中检索变量的地址?

时间:2014-08-20 11:35:17

标签: vb.net

我们如何获取存储在内存中的变量地址? `

Sub Main()
    Dim a As Integer
    a = 10
    System.Console.WriteLine("Value of a is : {0}", a)
    System.Console.WriteLine("Address of a is : {0}", AddressOf(a))
    System.Console.ReadKey()
End Sub

` 这里AddressOf是require函数名,但我想得到整数变量的地址。

1 个答案:

答案 0 :(得分:2)

我们不。所以我们不能

在dotnet和java世界中,变量address的概念与C中的概念不同。教授变量地址的方式是旧的。 java / dot-net语言太先进了。当然变量存在于内存中,但地址可能不是您的想法。因此,在使用这些语言时,我们通常不会考虑地址方面。仅在C / C ++的上下文中考虑。

现在为什么我们不考虑地址:

  1. 在使用这些语言编程时,我们不需要它。在使用C时我们需要它,但在使用java / dot-net时则不需要。这些语言不需要指针(如C中所示)。链接列表,数组,动态MALLOCed内存等,都可以在不需要知道内存地址的情况下实现。
  2. 地址不是常数。它可以改变。从程序员的角度来看,它可以在没有任何明显原因的情况下改变。它可以随时改变。它可以将更改为某些不可预知的位置。这些语言旨在充分利用可用的RAM,因此它们可以在数据周围移动。因此,我们无法确切地说出存在的确切位置。
  3. 这些语言旨在用于虚拟内存机器。这意味着如果你以某种方式设法获得变量的address,那么这个数字可能远非真实。操作系统可能同时为在两个visual studio实例中运行的两个程序中的两个变量分配相同的地址编号。再次,该地址将没有多大用处。
  4. 变量的实际地址不仅包含变量的数据。如果你设法获得变量的真实地址并且你去那里,你会发现很多数据,不仅仅是你的数据,还有很多其他数据!其他数据包括簿记数据。与C不同的是,7字符字符串恰好占用7(或8)字节的内存,在java / dot net中它可能占用大约30个字节(或更多)!!!。
  5. 所以这些是我们在java / dot-net中工作时通常追踪变量的内存地址的一些原因。