各位先進好~
如題,我有隻原本跑在32bit OS的程式,要port到64bits OS上
在使用pointer時發生奇怪的事
某pointer (假設是 hello_ptr)的位址 原本都是長這樣 : 0x7fffec7a
但跑到一半,忽然變成像這樣: 0xffffffff80061ae0,
並出現segmentation fault ( cant access memory)
我的疑問有兩個:
1. 為何不是從頭到尾都是 64bits
2. address為何會忽然從32bit變成64bits
可以給我個方向,或是關鍵字嗎 謝謝:)
64bit OS應該都是64bit,出現32bit我能想到的只有你自己將它讀出的時候轉型成32bit
作者:
hpeter (hpeter)
2015-11-04 12:16:00會不會是 pointer 沒用 64bits 去存取?? 亂猜一下XD
謝謝喔。 第一個問題: 我剛想到 可能是還沒malloc到大於4gb的ram地方,所以前面是0(沒顯示)to withoutshine: 我再去看看有沒有不小心cast到to hpeter: 咦 可是後面有出現0xffffffff80061ae0耶
作者: dou0228 (7777) 2015-11-04 17:21:00
直接用相容模式就沒啥好改的
作者:
hpeter (hpeter)
2015-11-05 12:08:00推 -Wall ... 有時小東西會產生大問題 @@