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

结构体变量占用内存的字节数

  • 内存
  • 2024-06-04 21:24:11
  • 2716

一、C语言联合体和结构体中变量所占内存unionU有两个成员变量,字符数组st占4个字节,整数i占4个字节,所以两者共用4个字节,unionU占4个字节。
StructA有两个成员变量,一个整数c占4个字节,一个unionU类型u也占4个字节。所以structA的大小就是两者之和,4+4=8字节。
注意,因为这些成员变量的大小都是4字节,所以不需要考虑字节补全等因素。


二、c语言结构体共用体占内存字节Union:
sizeof(union
data1)的值为16。在编译器的默认设置中,该联合体的最大原始类型为double,占用8个字节,因此该联合体以8开头。排序。由于字符数组c2占用9个字节,所以整个联合体必然占用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字节。