| 會員 ![]() | 【求助】有關program與OS之間的問題 有關program與OS之間的問題 請問各大大 我將p1.c的檔案copy成一份p2.c 而p1.c的內容是 main{ int a; printf("%d,&a"); } 再將其p1.c和p2.c 各別compiler 然後在將其二個檔案分別在二個終端機裡同時執行 問題來了...為何這二個檔會用到同一個位址呢? 是因為程式碼區段是共用的嗎 麻煩各大大們為我做個詳細的解答..謝謝 |
| 回覆 |
| 會員 ![]() | 如果你的系統是 win32 的話,每當你執行一個程式,就是產生一個行程,系統就會為這個行程配置個 4GB 的虛擬記憶體空間,你的程式就使用這個虛擬的記憶體空間執行。由於是虛擬的,所以你所看到記憶體位址都是不是在記憶體中的實際位址,而是這個 4GB 空間中的位址;且你的變收 a 是在堆疊中產生,而不是使用 new 在執行期配置記憶體,所以兩個 console 看到的位址會相同,但應該不會互相影響。 (根據腦中殘缺不齊的"作業系統概論"印象想到的解釋,如果有錯請指正...) |
| 回覆 |
| 會員 ![]() | 我的印相中 好像是他記憶體的位置是相對的 也就是說 不是絕對位置 而是相對於某個絕對位置 在堆疊區 可能相對於堆疊區的起點的長度都一樣 所以位置看起來相同 |
| 回覆 |
| |
| XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。