[问题] 把值存到一个指定的内存位址

楼主: 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