在Windows上面32位与64位的区别有:
1.指针大小的区别,sizeof(int *)在32bit下面是4个字节,在64bit下面是8个字节
2.size_t的区别,size_t在32bit下面是4个字节的范围,在64bit下面是8个字节的范围
3.地址空间的区别,在32bit下面,最大地址空间是4GB,在64bit下面是可以大于4GB的
4.32位程序在64位Windows上运行,是有一个Wow64子系统辅助其运行的,默认情况下,访问注册表和某些文件夹是被重定向的
5.指针的区别也意味着Handle的区别
6.唯一支持Windows原始64位编译的msvc编译器不支持64bit的内联汇编,如果要用汇编,需要单独编译再link
7.纯64bit程序的函数调用方式已经不再区分cdecl和stdcall方式,因为只有一种了。
8.64bit的程序不再使用esp,而是使用增加的几个64bit寄存器,因为esp不支持64bit空间的栈
最近的工作涉及到Linux的64位工作,发现当初对32位和64位区别的认识还不够:
1.long在Windows下面,不管是32bit还是64bit下,都是4个字节的,但在Linux下面,32bit下是4字节,在64bit下是8个字节。(long long在64