当前位置:首页 > 内存 > 正文

C语言结构体定义占不占内存

  • 内存
  • 2024-05-16 06:13:56
  • 5233

一、c语言结构体共用体占内存字节Union:
sizeof(union
data1)的值为16。编译器默认情况下,该union的最大基类型为double,占用8个字节,因此该union以8开头进行调整。字符数组c2占用9个字节,所以整个union应该占用9个字节,但根据对齐原则,实际分配给它的内存是16个字节。
结构体:
struct
数据按8字节对齐,long类型的成员1分配8字节。s、i、c、a原本分别占用4、2、1、10个字节。出于对齐的考虑,s分配4个字节,i分配2个字节,c分配2个字节。此时就使用了8个字节。a本来分配了10个字节,考虑到对齐,整个结构体占用的存储空间必须是8的倍数,所以给它分配了16个字节。因此,该结构体数据占用8+4+4+2+16=32字节。


二、C语言,结构体占内存长度求分析不同的编译器根据每种基本数据类型占用多少字节来获得不同的值。还有一个重要原则是内存通常按照8字节排列,以提高处理速度。