[問題] 宣告的記憶體位址在windos跟linux差異
剛剛我在上課,老師講了一個東西讓我非常困惑不已...
因為我非本科系出身,只是對寫程式很有興趣去自修的,
對指標、記憶體位址有基本的認識,然後剛剛老師在suse下用Anjuta在講c的指標
就隨便寫了一個很簡單的內容:
int x=77;
printf("%p", &x);
> 0x7fff4c64a0ac
秀出位址給我們看,然後就把秀出來的位址 0x7fff4c64a0ac 複製回程式裡...
printf("%d", *((int*)0x7fff4c64a0ac));
打算直接叫出位址裡的東西給我們看...
當下我疑問就很大,不是每次宣告的時候,系統才配發給我們位址嗎?
想當然是失敗了,不過老師卻很肯定只要程式沒更動,每次執行就會拿到同樣的位址,
所以他回到windos用devcpp寫了一樣的程式碼,
但這次就真的是每次執行,拿到x的位址就都是一樣了,
把位址寫死可以去拿到x的值...
於是老師就說可能是os的演算法有差異造成的...
可是我又問說這樣很奇怪,如果說我這樣把位址寫死,
拿到另一台電腦上執行不會有問題嗎? 老師卻說不會...
這樣我疑問很大啊,怎麼可能每次位址都一樣??
可是在windos底下的情況的確又是這樣,
想請問各位前輩到底是什麼情況呢??
--
真理和公平的界定是那麼模糊
道理不道理要怎麼說才能清楚
在匆忙的世界我們走自己的路
努力的追逐那其實退步的進步
路上的風景經過了也就不在乎 黃玠
我們都該學習 什麼是滿足 拾荒地圖
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.171.209.198
推
09/05 16:17, , 1F
09/05 16:17, 1F
推
09/05 16:18, , 2F
09/05 16:18, 2F
→
09/05 16:20, , 3F
09/05 16:20, 3F
→
09/05 16:21, , 4F
09/05 16:21, 4F
→
09/05 16:22, , 5F
09/05 16:22, 5F
推
09/05 16:25, , 6F
09/05 16:25, 6F
→
09/05 16:26, , 7F
09/05 16:26, 7F
推
09/05 16:28, , 8F
09/05 16:28, 8F
嗯...大概知道答案了,感謝大家~
我只是想找答案而已,至於老師我不想多說= ="
根據老師自己的說法也是非本科系啦,但據他本人言寫了不下10年的code
因為是職訓的課程,時間很短,教的東西很雜
所以我猜他大概也不想講的很細吧...
只是有時候寫程式的邏輯連我都覺得怪怪的就是了........
推
09/05 17:00, , 9F
09/05 17:00, 9F
推
09/05 17:07, , 10F
09/05 17:07, 10F
→
09/05 17:09, , 11F
09/05 17:09, 11F
噓
09/05 17:10, , 12F
09/05 17:10, 12F
→
09/05 17:10, , 13F
09/05 17:10, 13F
推
09/05 17:11, , 14F
09/05 17:11, 14F
推
09/05 17:27, , 15F
09/05 17:27, 15F
→
09/05 17:27, , 16F
09/05 17:27, 16F
→
09/05 17:28, , 17F
09/05 17:28, 17F
推
09/05 19:10, , 18F
09/05 19:10, 18F
推
09/05 20:20, , 19F
09/05 20:20, 19F
→
09/05 20:48, , 20F
09/05 20:48, 20F
→
09/05 20:56, , 21F
09/05 20:56, 21F
→
09/05 21:04, , 22F
09/05 21:04, 22F
推
09/05 21:23, , 23F
09/05 21:23, 23F
→
09/05 21:49, , 24F
09/05 21:49, 24F
推
09/05 21:56, , 25F
09/05 21:56, 25F
→
09/05 22:06, , 26F
09/05 22:06, 26F
推
09/05 22:21, , 27F
09/05 22:21, 27F
推
09/05 22:44, , 28F
09/05 22:44, 28F
抱歉,是我打錯了 是%d沒錯~"~
※ 編輯: NullLife 來自: 123.193.204.107 (09/05 22:48)
推
09/05 23:27, , 29F
09/05 23:27, 29F
推
09/05 23:32, , 30F
09/05 23:32, 30F
→
09/05 23:39, , 31F
09/05 23:39, 31F
推
09/06 01:20, , 32F
09/06 01:20, 32F
推
09/06 01:40, , 33F
09/06 01:40, 33F
→
09/06 01:44, , 34F
09/06 01:44, 34F
→
09/06 01:57, , 35F
09/06 01:57, 35F
→
09/06 01:57, , 36F
09/06 01:57, 36F
→
09/06 05:25, , 37F
09/06 05:25, 37F
推
09/06 10:48, , 38F
09/06 10:48, 38F
→
09/06 10:48, , 39F
09/06 10:48, 39F
→
09/06 10:50, , 40F
09/06 10:50, 40F
推
09/06 11:18, , 41F
09/06 11:18, 41F
→
09/06 11:27, , 42F
09/06 11:27, 42F
→
09/06 11:28, , 43F
09/06 11:28, 43F
推
09/06 12:21, , 44F
09/06 12:21, 44F
推
09/06 12:33, , 45F
09/06 12:33, 45F
→
09/06 12:33, , 46F
09/06 12:33, 46F
→
09/06 12:34, , 47F
09/06 12:34, 47F
→
09/06 12:35, , 48F
09/06 12:35, 48F
推
09/06 13:42, , 49F
09/06 13:42, 49F
→
09/06 13:44, , 50F
09/06 13:44, 50F
→
09/06 13:44, , 51F
09/06 13:44, 51F
推
09/06 16:52, , 52F
09/06 16:52, 52F
→
09/07 21:23, , 53F
09/07 21:23, 53F
推
09/07 21:26, , 54F
09/07 21:26, 54F
→
09/07 21:26, , 55F
09/07 21:26, 55F
→
09/08 00:05, , 56F
09/08 00:05, 56F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 3 篇):