作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,在我的系统上保留以下内容:sizeof(char) == 1
和 sizeof(char*) == 4
。很简单,当我们计算下面类的总大小时:
class SampleClass { char c; char* c_ptr; };
我们可以说 sizeof(SampleClass) = 5
。然而,当我们编译代码时,我们很容易看到 sizeof(SampleClass) = 8
。
那么问题来了“计算的问题在哪里?” :S
最佳答案
编译器通常会向结构中添加填充以在字边界上对齐它们(因为访问字对齐的位置需要更少的内存访问,因此速度更快)。
因此,即使 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/
我是一名优秀的程序员,十分优秀!