64位与32位处理器编程的差异和需要注意的问题
来源:互联网 发布:湖北大学知行学院学分 编辑:程序博客网 时间:2024/04/26 10:54
目前正在将一个32位平台的上的软件移植到64位的处理器上来。在移植的过程中遇到了如下的几个问题,与大家共享。
1. 指针长度的差异,在32位处理器上指针的长度为4字节,在64位处理器上,指针的长度为8字节。在平台的移植过程中,出现了指针越界的问题,问题的根源在于程序中假设了指针的长度为4字节,没有考虑到代码的跨平台可移植性问题。标准的情况下,应该用sizeof取代常量假设。
sizeof(void *)
In 32-bit platform, sizeof(void *) returns 4;
In 64-bit platform, sizeof(void *) returns 8.
2. long型数据长度的差异。在32位处理器上long型数据的长度为4字节,在64位处理器上,long型数据的长度为8字节。
In 32-bit platform, sizeof(long) 4
In 64-bit platform, sizeof(long) 8
3. struct timeval 的差异。在32微处理器上,sizeof ( struct timeval ) is 8 (bytes), 在64位处理器上sizeof(struct timeval ) is 16 (bytes).
在进行pcap文件处理的时候要特别注意, 这里的timeval是8字节的,如果在64位操作系统上使用默认的timeval,在对报文进行访问的时候会有内存越界的错误。
struct pcap_pkthdr
{
struct timeval ts;
DWORD caplen;
DWORD len;
}
struct timeval
{
DWORD GMTtime;
DWORD microTime
}
- 64位与32位处理器编程的差异和需要注意的问题
- C/C++ 32位机器和64位机器 差异问题总结 跨平台 移植问题 语言编程需要注意的64位和32机器的区别
- 语言编程需要注意的64位和32位机器的区别
- 64位处理器与32位处理器的区别
- WINDOWS_32位与64位系统的编程差异
- win32,win64编程永恒;语言编程需要注意的64位和32机器的区别
- win32,win64编程永恒;语言编程需要注意的64位和32机器的区别
- win32,win64编程永恒;语言编程需要注意的64位和32机器的区别
- win32,win64编程永恒;语言编程需要注意的64位和32机器的区别
- win32,win64编程永恒;语言编程需要注意的64位和32机器的区别
- C语言编程需要注意的64位和32机器的区别
- 语言编程需要注意的64位和32机器的区别
- 语言编程需要注意的64位和32机器的区别 .
- 语言编程需要注意的64位和32机器的区别
- 语言编程需要注意的64位和32机器的区别
- 语言编程需要注意的64位和32机器的区别
- 语言编程需要注意的64位和32机器的区别
- C语言编程需要注意的64位和32机器的区别
- ios检测设备摄像头、指南针、录音、陀螺仪的状态
- 虚拟现实
- windows下php_curl无法访问ssl加密的https地址
- 我的编码不良习惯
- Sharepoint 2013 修改html母版页遇到的问题
- 64位与32位处理器编程的差异和需要注意的问题
- 取JSON数据中的一个值
- Box2D C++ 教程-碰撞过滤
- APP集成多盟积分墙
- 介绍一款比Android原生模拟器还要快的模拟器Genymotion
- 第一篇博客
- sharepoint 2013 中自建母版页,自动生成html中的顶部导航代码步骤
- Wireshark基本介绍和学习TCP三次握手
- ios小项目——新浪微博客户端总结