关于结构体数据存储的对齐问题
作者:
时间:2016-12-01
来源:网络
收藏
在linux下的结果:
在windows下的结果:
在linux下的存储形式,其中黑色包围起来的才是我们的存储空间白色的部分是保留区域,通过下面的两幅图就可以知道其中的一些道理,知道其中所谓的完成一样的功能,保证存储空间最小:
在windows下的存储形式,其中黑色包围起来的才是我们的存储空间白色的部分是保留区域:
从上面的几个图片可以知道在C语言中的内存分布是比较复杂的。一定要注意存储的对齐形式,这样才能了解其中的分布规律。当然了上面的形式都只是在小端处理器模式下的存储形式,对于大端也有类似的情况,只是存储的位置不一样,但是内存的大小是相同的。
结构体的定义不能是随便的,如果考虑好对齐关系能够节省大量的存储空间。实现效率和存储空间的折中。虽然#pragmapack(n)等能够改变其中的对齐方式,不过建议不要随便改动,可能得不偿失。
技术专区
评论