C 语言的一大优势就是对内存空间的控制,当然,在面向对象语言的压力下,程序员更喜欢轻松的语言,不喜欢自己还要顾虑内存空间。
可是,C 语言仍然有很强的生命力,尤其是在操作系统、嵌入式系统这两方面,因为要直接操作硬件,C语言就显现出自己强大的体制、机制、逻辑优势。
C语言对内存控制,有一个始终困扰初学者的问题:字节对齐!
看一段程序:
stExample结构体的大小是8 Byte. 看起来符合预期。
可是下面这个例子:
stExample结构体的大小就变成了12 Byte. 为什么元素少了,反而占用空间会多出来4 Byte?
/
先让我们看四个重要的基本概念:
1.数据类型自身的对齐值:
: 对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。
2.结构体或者类的自身对齐值:<