作者ashin0212 (QQ毛)
看板LinuxDev
標題[問題] 32bits程式port到64bits OS
時間Wed Nov 4 10:51:40 2015
各位先進好~
如題,我有隻原本跑在32bit OS的程式,要port到64bits OS上
在使用pointer時發生奇怪的事
某pointer (假設是 hello_ptr)的位址 原本都是長這樣 : 0x7fffec7a
但跑到一半,忽然變成像這樣: 0xffffffff80061ae0,
並出現segmentation fault ( cant access memory)
我的疑問有兩個:
1. 為何不是從頭到尾都是 64bits
2. address為何會忽然從32bit變成64bits
可以給我個方向,或是關鍵字嗎 謝謝:)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.247.217
※ 文章網址: https://webptt.com/m.aspx?n=bbs/LinuxDev/M.1446605502.A.9FE.html
1F:→ withoutshine: 64bit OS應該都是64bit,出現32bit我能想到的 11/04 12:15
2F:→ withoutshine: 只有你自己將它讀出的時候轉型成32bit 11/04 12:16
3F:→ hpeter: 會不會是 pointer 沒用 64bits 去存取?? 亂猜一下XD 11/04 12:16
4F:→ ashin0212: 謝謝喔。 第一個問題: 我剛想到 可能是還沒malloc到大 11/04 12:53
5F:→ ashin0212: 於4gb的ram地方,所以前面是0(沒顯示) 11/04 12:53
6F:→ ashin0212: to withoutshine: 我再去看看有沒有不小心cast到 11/04 13:39
7F:→ ashin0212: to hpeter: 咦 可是後面有出現0xffffffff80061ae0耶 11/04 13:40
8F:→ tjjh89017: 可以直接用相容模式? 11/04 14:00
9F:→ ashin0212: @@? 11/04 16:05
10F:→ dou0228: 直接用相容模式就沒啥好改的 11/04 17:21
11F:推 Bencrie: 先把 -Wall 開下去看看有沒有警告 11/05 01:40
12F:→ hpeter: 推 -Wall ... 有時小東西會產生大問題 @@ 11/05 12:08
13F:→ ashin0212: okok 謝謝 我測試完畢會再上來向大家報告 11/07 09:38
14F:推 wgzleodf: 64bit pointer 8byte, 32bit pointer 4byte的關係嗎? 01/23 00:22