[問題] 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