【求助】有關program與OS之間的問題





dickyabc
2005-11-11, 08:18 PM
有關program與OS之間的問題

請問各大大
我將p1.c的檔案copy成一份p2.c
而p1.c的內容是
main{
int a;
printf("%d,&a");
}
再將其p1.c和p2.c 各別compiler
然後在將其二個檔案分別在二個終端機裡同時執行
問題來了...為何這二個檔會用到同一個位址呢?
是因為程式碼區段是共用的嗎
麻煩各大大們為我做個詳細的解答..謝謝




HarrisonLin
2005-11-11, 10:52 PM
如果你的系統是 win32 的話,每當你執行一個程式,就是產生一個行程,系統就會為這個行程配置個 4GB 的虛擬記憶體空間,你的程式就使用這個虛擬的記憶體空間執行。由於是虛擬的,所以你所看到記憶體位址都是不是在記憶體中的實際位址,而是這個 4GB 空間中的位址;且你的變收 a 是在堆疊中產生,而不是使用 new 在執行期配置記憶體,所以兩個 console 看到的位址會相同,但應該不會互相影響。

(根據腦中殘缺不齊的"作業系統概論"印象想到的解釋,如果有錯請指正...)

VicLin
2005-11-12, 09:53 AM
我的印相中 好像是他記憶體的位置是相對的
也就是說 不是絕對位置 而是相對於某個絕對位置
在堆疊區 可能相對於堆疊區的起點的長度都一樣
所以位置看起來相同