首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

Fedora13_64位系统下地址赋给指针数组出错,该怎么解决

2012-04-11 
Fedora13_64位系统下地址赋给指针数组出错代码:unsigned int addr1unsigned char *mmio[1]void *getaddr

Fedora13_64位系统下地址赋给指针数组出错
代码:
unsigned int addr1;
unsigned char *mmio[1];
void *getaddr(uint32_t offset)
{
  ...
  return (adddr1);
}
mmio[0]=(unsigned char *)getaddr(4);
这里出错了,getaddr(4)返回值为64位地址0x6f56f35620,
赋给mmio[0]后,mmio[0]接收到的值却为0xffffffff56f35620!
如果是编译器的原因,应该怎么该程序,才能得到正确的结果呢?

[解决办法]
不要怀疑编译器 大家都是用这个编译器,为什么单单你的程序就不行呢
开源软件大多跨平台兼容32位 64位,它们能做到,你的程序也应该多考虑移植的问题

32位 64位最直观的差别是指针长度,最可能引起问题,但是你的程序为何出错,难以结论。还要你仔细分析

热点排行