[問題] 把值存到一個指定的記憶體位址

作者: unixxxx (皓皓)   2015-01-23 17:11:35
把 整數 5 存到 0x00123456這個記憶體位址 並用指標指向它
請問該怎麼把值存到指定的記憶體位址裡?!
int *a;
a=00123456;
*a=5;
原本是這樣打 可是編譯過不了 他不會把00123456當做記憶體位址
應該要怎麼改?!
作者: wenyonba (射後不理很XX啊!!!!)   2015-01-23 18:29:00
一定不行啊,你怎麼知道這位址是哪,有沒有其他資源佔用一定要由 OS 分配給你
作者: pizzafan (七情三想)   2015-01-23 19:02:00
/如何取得系統總記憶體的位置
作者: epithet (epithet)   2015-01-23 19:13:00
int *logicalAddr = reinterpret_cast<int *>(42798);
作者: carylorrk (carylorrk)   2015-01-23 19:40:00
只有我覺得是那個 0 開頭的關係嗎XDD
作者: wenyonba (射後不理很XX啊!!!!)   2015-01-23 21:20:00
直接 reinterpret_cast 過去會發生什麼事 ?_?
作者: epithet (epithet)   2015-01-23 22:46:00
會把 42798 存進記憶體裡面,一段該代表變數的位置裡。
作者: L4ys (Lays)   2015-01-24 00:05:00
應該要寫 a=0x00123456; 應該會直接segmentation fault啦這個記憶體位置通常不可寫
作者: Killercat (殺人貓™)   2015-01-24 02:07:00
給你個提示,在保護模式下,所有程式拿到的記憶體都是相對位置,只有kernel space(linux)跟Ring1以下(Win)才有機會得到絕對位置
作者: uranusjr (←這人是超級笨蛋)   2015-01-24 04:08:00
單晶片之類的也是有可能會這樣寫啦
作者: karose (karose)   2015-01-24 09:14:00
位址要轉指標便可
作者: carylorrk (carylorrk)   2015-01-24 17:06:00
他也沒有講是不是有 MMU,應該可以預設不用理吧。除非是在寫 kernel,纔會有轉換的問題。
作者: Killercat (殺人貓™)   2015-01-24 21:28:00
其實早期的確能透過dll共用記憶體位置不過那已經是很早期的windows API行為就是 :P當年不少IPC都是用這種偷吃步的方法實現的
作者: TobyH4cker (Toby (我要當好人))   2015-01-24 23:11:00
*(int *)ADDRESS = VALUE;不知道上面為什麼扯到好遠的地方去...是L4ys大大耶XDDD 先膜拜 原PO只有漏了"0x" 其他沒錯
作者: jaw109   2015-01-25 14:33:00
除非這位址是os配給你的,否則一定會segmentation fault
作者: tubbysong (song)   2015-01-25 17:41:00
Int *p; p=(int)0x1234 or *p=(int)0x1234
作者: TobyH4cker (Toby (我要當好人))   2015-01-26 04:40:00
樓上你兩個式子是不同意義喔樓主只是舉個例子,沒有考慮範圍,所以純就問題解答

Links booklink

Contact Us: admin [ a t ] ucptt.com