意义是什么? 长度少于10个字!
节省了内存,降低了效率。 这玩意不能用哈,会影响所有接下来的结构,必须是#pragma pack(push, 1) 举个例子来解释吧 struct { char ch; int flag; }A; 使用默认对齐,假设4字节对齐,显然0字节存储ch,接下来1,2,3字节是对齐字节,第四字节才是flag。 如果我要把A的内容通过网络发送给客户端,客户端是不知道我机器的对齐字节的,这样的话,虽然对方知道我的结构定义,但是会出现解析错误问题。因为我们不能假设对方也使用和自己机器一样的字节对齐方式。这个道理和大小端是一个概念。说白了,必须传输连续的字节流,中间不能夹带无意义的信息。 当然了,如果我不跨网络,或者进程传输。那是不是说这样做就没有意义了。 也不尽然,不使用字节对齐可以节省空间,但是访问速率上就降低了。 还有个双方约定好字节对齐方式的功能。
|