2010-08-01 110 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