gpt4 book ai didi

c++ - sizeof() : the size of a class isn't the same as the size of it's members together?

转载 作者:行者123 更新时间:2023-11-30 00:41:20 30 4
gpt4 key购买 nike

首先,在我的系统上保留以下内容:sizeof(char) == 1sizeof(char*) == 4。很简单,当我们计算下面类的总大小时:

class SampleClass { char c; char* c_ptr; };

我们可以说 sizeof(SampleClass) = 5。然而,当我们编译代码时,我们很容易看到 sizeof(SampleClass) = 8

那么问题来了“计算的问题在哪里?” :S

  • 语言:C++
  • 编译器:gcc 4.4.0
  • 操作系统:Tinycore

最佳答案

编译器通常会向结构中添加填充以在字边界上对齐它们(因为访问字对齐的位置需要更少的内存访问,因此速度更快)。

因此,即使 char 只占用 1 个字节,c_ptr 也会移动到下一个 4 字节边界,因此得到 8 个字节的结果。

关于c++ - sizeof() : the size of a class isn't the same as the size of it's members together?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3897273/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com