[问题] 32bits程式port到64bits OS

楼主: ashin0212 (QQ毛)   2015-11-04 10:51:40
各位先进好~
如题,我有只原本跑在32bit OS的程式,要port到64bits OS上
在使用pointer时发生奇怪的事
某pointer (假设是 hello_ptr)的位址 原本都是长这样 : 0x7fffec7a
但跑到一半,忽然变成像这样: 0xffffffff80061ae0,
并出现segmentation fault ( cant access memory)
我的疑问有两个:
1. 为何不是从头到尾都是 64bits
2. address为何会忽然从32bit变成64bits
可以给我个方向,或是关键字吗 谢谢:)
作者: withoutshine (何必帮别人想那么多)   2015-11-04 12:15:00
64bit OS应该都是64bit,出现32bit我能想到的只有你自己将它读出的时候转型成32bit
作者: hpeter (hpeter)   2015-11-04 12:16:00
会不会是 pointer 没用 64bits 去存取?? 乱猜一下XD
楼主: ashin0212 (QQ毛)   2015-11-04 12:53:00
谢谢喔。 第一个问题: 我刚想到 可能是还没malloc到大于4gb的ram地方,所以前面是0(没显示)to withoutshine: 我再去看看有没有不小心cast到to hpeter: 咦 可是后面有出现0xffffffff80061ae0耶
作者: tjjh89017 (伊达政宗)   2015-11-04 14:00:00
可以直接用相容模式?
楼主: ashin0212 (QQ毛)   2015-11-04 16:05:00
@@?
作者: dou0228 (7777)   2015-11-04 17:21:00
直接用相容模式就没啥好改的
作者: Bencrie   2015-11-05 01:40:00
先把 -Wall 开下去看看有没有警告
作者: hpeter (hpeter)   2015-11-05 12:08:00
推 -Wall ... 有时小东西会产生大问题 @@
楼主: ashin0212 (QQ毛)   2015-11-07 09:38:00
okok 谢谢 我测试完毕会再上来向大家报告

Links booklink

Contact Us: admin [ a t ] ucptt.com