→ MOONRAKER:這樣當然算 "good morning good morning\n" 在compile 06/13 23:48
→ MOONRAKER:的時候會被賦予一個位址 所以ch1會得到這個位址 06/13 23:48
推 sunkill:你怎麼宣告 int* 結果給 char*? 06/13 23:49
→ sunkill:假設都是 char* 好了 你不如 char ch1[]="string"; 06/13 23:51
→ su35:我寫錯了 那在指標的指標直接給"XXX"它不會自動給一個位址嗎 06/13 23:51
推 Laputaet3:這是特例喔~通常要先malloc才對 06/13 23:52
→ sunkill:直接存取 pointer 的習慣不太好 而且通常是 const 06/13 23:52
推 phterry:這樣做,系統會配置一塊記憶體裡存這個字串,但是正如樓上 06/13 23:57
→ phterry:所述,是一個const,所以只能讀不能寫,如果你做以下的事 06/13 23:58
→ phterry:*ch1 = 'G'; /* 試著把第一個字元變大寫 */ 06/13 23:58
→ phterry:或許可以編譯,但執行時一定會發生記憶體錯誤 06/13 23:59
推 zlw:打個嘴砲,實體記憶體位址想要存取,除非你退出保護模式吧... 06/14 04:15
→ zlw:但只要Windows還在跑,就別想,重開機進去DOS還有可能 06/14 04:16
→ VictorTom:可是為什麼小弟我記得WinDbg可以切到Phy Memory來R/W?? 06/14 11:43
→ VictorTom:只是沒有人知道這樣切過去到底會R/W到什麼東西就是XD 06/14 11:43
推 zlw:可能是透過別的方法,但不是以前segment:offset這樣直接mov 06/14 14:13
→ zlw:因為保護模式只要開著,Windows又多工,隨時都有程式需要跑 06/14 14:13
→ zlw:也許是分頁表之類有紀錄對應,OS跟計組讀得有點爛,不太確定 06/14 14:15
推 UNARYvvv:這篇給的是虛擬記憶體位址吧 06/14 22:49
→ UNARYvvv:另外 win32 下也可以讀寫 physical mem 是沒錯啦 06/14 22:51
→ UNARYvvv:透過 section object... 06/14 22:51