2010-08-01 49 views
0

我想知道这个:动态变量如何绑定到内存中的地址?

让我们假设我让系统为阵列分配内存例如MYARRAY。那么计算机怎么知道我何时使用这个MyArray变量在哪里看?这些命名变量如何在低层次上进行管理?

总之我想知道内存中定义的变量和物理地址之间的关系。

我希望你能理解,因为这是一点麻烦的解释,我找不到更好的单词。

回答

0

总之,我想知道在内存中定义的变量和物理地址 之间的关系 。

您的变量=其虚拟地址。

虚拟物理地址映射是由操作系统的虚拟内存子系统完成的。知道变量的物理地址通常是不感兴趣的。

+0

因此,如果我声明一个变量,程序会创建某种“指针”,并且当我在程序中稍后引用该变量时,那么在机器代码中,我将通过指向实际内存的“指针”访问我的变量数据 - 是类似的东西? – Jarek 2010-08-01 18:51:53

+0

你声明的变量是一个指向你选择的变量类型的指针。当你想为你的变量分配空间时,你可以向操作系统请求它,并且你得到一个指向分配内存开始的指针。为了比较,在启动程序时已经分配了静态变量,并且它们的指针被硬编码到代码中。 – 2010-08-01 21:16:28

+0

这就是为什么程序员知道C的原因。在C中,所有这些显然是透明的。之后,推断高级语言如何做同样的事情总是微不足道的。 – Arelius 2011-04-21 18:10:20

0

一个变量存储内存的地址,所以当你的程序要求myVar中的值时,它实际上是获得一个内存地址。

有点像当您搜索网站时。您要求显示www.google.com,但它实际上是用于获取信息的谷歌IP。

+0

该地址存储在堆栈中,这是另一种内存分配方法:)对该地址的引用计算为堆栈顶端地址减去对应于该变量的常量值。 – Basilevs 2010-08-01 14:51:13