[問題] 32bits程式port到64bits OS

看板LinuxDev作者 (QQ毛)時間9年前 (2015/11/04 10:51), 編輯推噓2(2012)
留言14則, 7人參與, 最新討論串1/1
各位先進好~ 如題,我有隻原本跑在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

11/04 12:15, , 1F
64bit OS應該都是64bit,出現32bit我能想到的
11/04 12:15, 1F

11/04 12:16, , 2F
只有你自己將它讀出的時候轉型成32bit
11/04 12:16, 2F

11/04 12:16, , 3F
會不會是 pointer 沒用 64bits 去存取?? 亂猜一下XD
11/04 12:16, 3F

11/04 12:53, , 4F
謝謝喔。 第一個問題: 我剛想到 可能是還沒malloc到大
11/04 12:53, 4F

11/04 12:53, , 5F
於4gb的ram地方,所以前面是0(沒顯示)
11/04 12:53, 5F

11/04 13:39, , 6F
to withoutshine: 我再去看看有沒有不小心cast到
11/04 13:39, 6F

11/04 13:40, , 7F
to hpeter: 咦 可是後面有出現0xffffffff80061ae0耶
11/04 13:40, 7F

11/04 14:00, , 8F
可以直接用相容模式?
11/04 14:00, 8F

11/04 16:05, , 9F
@@?
11/04 16:05, 9F

11/04 17:21, , 10F
直接用相容模式就沒啥好改的
11/04 17:21, 10F

11/05 01:40, , 11F
先把 -Wall 開下去看看有沒有警告
11/05 01:40, 11F

11/05 12:08, , 12F
推 -Wall ... 有時小東西會產生大問題 @@
11/05 12:08, 12F

11/07 09:38, , 13F
okok 謝謝 我測試完畢會再上來向大家報告
11/07 09:38, 13F

01/23 00:22, , 14F
64bit pointer 8byte, 32bit pointer 4byte的關係嗎?
01/23 00:22, 14F
文章代碼(AID): #1MENA-d- (LinuxDev)
文章代碼(AID): #1MENA-d- (LinuxDev)