一个类对象有一个int和double变量,没有虚函数表,为什么用sizeof显示16个字节呢

来源:百度知道 编辑:UC知道 时间:2024/06/18 01:11:41
帮忙解释一下好吗

默认对于只有基本类型成员的情况
首先一个成员变量在结构体中的相对位置必须能被自身尺寸整除。
其次一个结构体的整体尺寸必须能被里面尺寸最大的成员尺寸整除。

所以如果是int, double的情况double因为要在能被8整除的位置上,所以就成了int,浪费的4字节,double

如果是double,int 因为double的尺寸是8,整个结构体的尺寸必须能被8整除就成了double,int,浪费的4字节

第一条的原因是,基本类型在能被自己尺寸整除的位置上读写速度是最快的。
第二条的目的是在申请这个类型的数组的时候,保证整个数组里的所有成员都是对齐的。

和结构体字节对齐原理是一样的
double占八个字节
int占四个字节,你用的系统应该默认是按照长的对齐,int也就占了八个字节
一共十六个字节

看下默认的字节对其方式是不是8字节?可以强制1字节对齐或者4字节对齐。

当无法确定你的变量的字节数是可以用sizeof来控制