32位机器环境下结果如下:

【c】数据类型及字节数_JAVA【c】数据类型及字节数_JAVA_02


【c】数据类型及字节数_JAVA_03

指针在32位机器上为4个字节,在64位机器上为8个字节。


好吧,当你了解了以上的知识的时候,我们来看这样一个题目:

struct test

{    

.   char   A;    

    int    B;    

    short  C;    

}test1;  


计算结构体大小时需要考虑其内存布局,结构体在内存中存放是按单元存放

的,每个单元多大取决于结构体中最大基本类型的大小。

以int型占用4个来作为倍数,因为A占用一个字节后,B放不下,所以开辟新的单元,然后开辟新的单元放C,所以格式一占用的字节数为:3*4=12;

【c】数据类型及字节数_JAVA_04

struct test

{    

    char   A;    

    short  C;    

    int    B;    

}test2;   

A后面还有三个字节,足够C存放,所以C根着A后面存放,然后开辟新单元存放B数据。所以格式二占用的内存字节为2*4=8.

【c】数据类型及字节数_JAVA_05

以上就是内存里面的4字节对齐问题,减少内存的占用,是对程序的一种优化。