MST
星途 面试题库

面试题:C语言结构体位域内存节省原理基础应用

假设有如下结构体定义: ```c struct test { unsigned int a : 3; unsigned int b : 5; unsigned int c : 4; }; ``` 请计算该结构体实例化后占用的内存大小,并简要说明计算依据。
37.5万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 计算结果
    • 该结构体实例化后占用的内存大小为4字节。
  2. 计算依据
    • 在C语言中,结构体成员按位域分配内存。这里a占3位,b占5位,c占4位,总共3 + 5 + 4 = 12位。
    • 但是,C语言中内存分配的基本单位是字节(1字节 = 8位)。对于结构体,编译器通常会对其进行内存对齐以提高访问效率。
    • 由于12位不足2字节(16位),但为了满足内存对齐要求,结构体的大小会被调整为4字节(32位系统下常见的对齐方式是按4字节对齐)。所以该结构体实例化后占用4字节内存。