作者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/cn.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