MST

星途 面试题库

面试题:C语言结构体对齐规则应用

假设有如下结构体定义: ```c struct Test { char a; int b; short c; }; ``` 请计算该结构体的大小,并解释计算过程。
28.7万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 计算结构体大小

    • 在一般的32位系统中,char类型占1个字节,int类型占4个字节,short类型占2个字节。
    • 结构体存在内存对齐问题。假设默认对齐数为4(32位系统常见默认对齐数)。
    • 结构体成员achar类型,占1个字节,按照4字节对齐,a后填充3个字节。
    • 成员bint类型,占4个字节,正好对齐。
    • 成员cshort类型,占2个字节,按照4字节对齐,c后填充2个字节。
    • 所以结构体Test的大小为1 + 3 + 4 + 2 + 2 = 12字节。
  2. 总结

    • 该结构体struct Test的大小为12字节。计算过程是基于内存对齐原则,先考虑每个成员自身大小,再根据对齐数计算填充字节,最后累加得到结构体总大小。