C语言结构体占用内存深入讲解
前几天有个小朋友问了我一下,关于C语言结构体占用空间的问题。理论上,结构体中的各个成员在内存中应该是连续储存的,就像数组里面的元素一样。事实上,也确实是这个样子的,不过和我们想象的有点不一样。但是我们写一个小代码验证一下发现和我们想的不一样。毕竟 4 * 3 = 12,我们再次实验,如果按照我们的推测,那么内存大小应该是 8 * 3 = 24。C语言结构体所占内存大小,其实里面涉及到C语言内存对齐,提高寻址效率的一种思想在里面。具体我就不在这里展开来说了,有兴趣的可以自己百度了解一下。这三种所占内存大小均为 4 + 4 + 8 = 16。如果将变量 b 和变量 c 的位置互换,则变为 8 + 8 + 8 = 24。应该为 1 + 15 + 8 + 8 = 32。