MST

星途 面试题库

面试题:C++中class与struct内存布局差异之基础分析

在C++中,定义如下class和struct:class ClassA { int a; char b; }; struct StructA { int a; char b; }; 假设在32位系统下,默认对齐方式,请问ClassA和StructA的实例分别占用多少字节内存?请说明原因。
46.4万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. ClassA和StructA实例占用字节数
    • 在32位系统默认对齐方式下,ClassAStructA的实例都占用8字节内存。
  2. 原因
    • 对于ClassAStructA,它们都包含一个int类型成员(通常在32位系统占4字节)和一个char类型成员(占1字节)。
    • 由于默认对齐方式下,结构体和类的成员对齐规则是按照成员中最大对齐数的整数倍来对齐。这里int类型的对齐数是4字节,char类型对齐数是1字节,最大对齐数为4字节。
    • int a占4字节,char b占1字节,为了满足4字节对齐,char b后面会填充3字节,所以总共占用4 + 1+3 = 8字节。因此ClassAStructA实例都占用8字节内存。