以下是引用许苏娟在2010-4-5 10:54:29的发言:
谁能告诉我(1)为什么是8???
要内存对齐,char是一个字节.int四个字节..在32位系统里.
char,的起始地址为0,下一个地址为1,1 不是后面int类型占的空间4的倍数..所以它就会
把 int类型数据 向后面移吧.移到4开头,到7.所以其实它在char数据后面其实空了三个字节的..
但是有时候,可以人为地加一个#pragma pack()
,这样你可以自己指定对齐的方式了,比如#pragma pack(2),那刚才的题目应该是6.而不是8了,括号里的数就是你要对齐方式.
至于为什么要内存对齐,简单说是空间来换时间,
上面,只是我个人的理解..详解,求助GOOGLE.