32位机器环境下结果如下:
指针在32位机器上为4个字节,在64位机器上为8个字节。
好吧,当你了解了以上的知识的时候,我们来看这样一个题目:
struct test
{
. char A;
int B;
short C;
}test1;
计算结构体大小时需要考虑其内存布局,结构体在内存中存放是按单元存放
的,每个单元多大取决于结构体中最大基本类型的大小。
以int型占用4个来作为倍数,因为A占用一个字节后,B放不下,所以开辟新的单元,然后开辟新的单元放C,所以格式一占用的字节数为:3*4=12;
struct test
{
char A;
short C;
int B;
}test2;
A后面还有三个字节,足够C存放,所以C根着A后面存放,然后开辟新单元存放B数据。所以格式二占用的内存字节为2*4=8.
以上就是内存里面的4字节对齐问题,减少内存的占用,是对程序的一种优化。