看板 LinuxDev 關於我們 聯絡資訊
各位先進好~ 如題,我有隻原本跑在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://www.ptt.cc/bbs/LinuxDev/M.1446605502.A.9FE.html
withoutshine: 64bit OS應該都是64bit,出現32bit我能想到的 11/04 12:15
withoutshine: 只有你自己將它讀出的時候轉型成32bit 11/04 12:16
hpeter: 會不會是 pointer 沒用 64bits 去存取?? 亂猜一下XD 11/04 12:16
ashin0212: 謝謝喔。 第一個問題: 我剛想到 可能是還沒malloc到大 11/04 12:53
ashin0212: 於4gb的ram地方,所以前面是0(沒顯示) 11/04 12:53
ashin0212: to withoutshine: 我再去看看有沒有不小心cast到 11/04 13:39
ashin0212: to hpeter: 咦 可是後面有出現0xffffffff80061ae0耶 11/04 13:40
tjjh89017: 可以直接用相容模式? 11/04 14:00
ashin0212: @@? 11/04 16:05
dou0228: 直接用相容模式就沒啥好改的 11/04 17:21
Bencrie: 先把 -Wall 開下去看看有沒有警告 11/05 01:40
hpeter: 推 -Wall ... 有時小東西會產生大問題 @@ 11/05 12:08
ashin0212: okok 謝謝 我測試完畢會再上來向大家報告 11/07 09:38
wgzleodf: 64bit pointer 8byte, 32bit pointer 4byte的關係嗎? 01/23 00:22