我想知道這個:動態變量如何綁定到內存中的地址?
讓我們假設我讓系統爲陣列分配內存例如MYARRAY。那麼計算機怎麼知道我何時使用這個MyArray變量在哪裏看?這些命名變量如何在低層次上進行管理?
總之我想知道內存中定義的變量和物理地址之間的關係。
我希望你能理解,因爲這是一點麻煩的解釋,我找不到更好的單詞。
我想知道這個:動態變量如何綁定到內存中的地址?
讓我們假設我讓系統爲陣列分配內存例如MYARRAY。那麼計算機怎麼知道我何時使用這個MyArray變量在哪裏看?這些命名變量如何在低層次上進行管理?
總之我想知道內存中定義的變量和物理地址之間的關係。
我希望你能理解,因爲這是一點麻煩的解釋,我找不到更好的單詞。
總之,我想知道在內存中定義的變量和物理地址 之間的關係 。
您的變量=其虛擬地址。
虛擬物理地址映射是由操作系統的虛擬內存子系統完成的。知道變量的物理地址通常是不感興趣的。
我假設你正在尋找什麼是運行時系統如何dynamic memory allocation。然而,根據編程語言/運行時間的不同,內存也可以在stack上分配。
有一個similar question,你也可以看看。
一個變量存儲內存的地址,所以當你的程序要求myVar中的值時,它實際上是獲得一個內存地址。
有點像當您搜索網站時。您要求顯示www.google.com,但它實際上是用於獲取信息的谷歌IP。
該地址存儲在堆棧中,這是另一種內存分配方法:)對該地址的引用計算爲堆棧頂端地址減去對應於該變量的常量值。 – Basilevs 2010-08-01 14:51:13
因此,如果我聲明一個變量,程序會創建某種「指針」,並且當我在程序中稍後引用該變量時,那麼在機器代碼中,我將通過指向實際內存的「指針」訪問我的變量數據 - 是類似的東西? – Jarek 2010-08-01 18:51:53
你聲明的變量是一個指向你選擇的變量類型的指針。當你想爲你的變量分配空間時,你可以向操作系統請求它,並且你得到一個指向分配內存開始的指針。爲了比較,在啓動程序時已經分配了靜態變量,並且它們的指針被硬編碼到代碼中。 – 2010-08-01 21:16:28
這就是爲什麼程序員知道C的原因。在C中,所有這些顯然是透明的。之後,推斷高級語言如何做同樣的事情總是微不足道的。 – Arelius 2011-04-21 18:10:20