您的位置:首页 > 其它

不同变量类型在32位和64位机器上的长度

2012-03-27 13:28 274 查看
近日在centos下用c++/c写东西,这个程序的服务端运行在64位的centos下,程序是在32位机器上写的。其实这个是没有问题的,在编译的时候就已经决定了其所占内存的长度。如:

long a = 0;
printf("size of a is %d", sizeof a);
上述代码在32位机器上编译、在32位/64位机器上执行时,结果均为size of a is 4。
当然,为了保证数据传输的一致性制定了一套协议,用struct实现。为了保证输出过程中,数据的完整性,特别针对系统的不同对struct里变量的类型进行了优化。为了保证内存对齐方式的一致和数据存储空间的紧凑,都用 #pragma pack(1) 指定了对齐大小。
以下是在centos_x32和centos_x64下对应的类型长度:

/*******size of types on centos_x32*****************/

size of char:1

size of int:4

size of long :4

size of float :4

size of long long:8

size of double:8

size of long double:12

size of char * :4

/*******size of types on centos_x64*****************/

size of char:1

size of int:4

size of long :8

size of float :4

size of long long:8

size of double:8

size of long double:16

size of char * :8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: