当前位置: 首页 > news >正文

信息化建设办公室网站鄂尔多斯seo

信息化建设办公室网站,鄂尔多斯seo,固原市住房和城乡建设厅网站,泾川网站城镇建设规化图什么是字节对齐 1.空类 class A {}对空类做sizeof()计算时应当等于1 2.带虚函数的类 如果有一个类,包含两个32位整型的数据成员,一个普通成员函数,还有一个virtual虚函数,在32位机器上,这个…

什么是字节对齐

1.空类

class A
{}

对空类做sizeof()计算时应当等于1

2.带虚函数的类

如果有一个类,包含两个32位整型的数据成员,一个普通成员函数,还有一个virtual虚函数,在32位机器上,这个类sizeof()计算的时候得到多少,编译是4字节对齐

32位机器

#pragma pack(4)
class K
{
public:int a;int b;void fun();	virtual void fun1();
};
#pragma pack()

a占4个字节
b占4个字节
void fun不占用内存
因为有一个virtual虚寒函数,有一个虚函数指针,32系统中占用4个字节

所以,占用12个字节。

  • 如果变成8字节对齐呢,应该是多大?
#pragma pack(8)
class K
{
public:int a;int b;void fun();	virtual void fun1();
};
#pragma pack()

也许你会觉得是16,但是正确的结果是12.

为什么依然还是12呢?

因为字节对齐的规则规定,
对于结构体,他的有效对齐值,是#pragma pack()和该结构体中最大数据成员两者中的较小的那个值。
这里#pragma pack(8)值为8,但K class中最大数据成员为4个字节,所类K依然按照4字节对齐。

  • 如果一个成员函数变成2个成员函数呢?
#pragma pack(8)
class K
{
public:int a;int b;void fun();	void fun2();virtual void fun1();
};
#pragma pack()

sizeof(K)依然是占用12个字节。
因为成员函数不占用类对象的内存的。

  • 如果增加一个虚函数,变成两个虚函数了呢?
#pragma pack(8)
class K
{
public:int a;int b;void fun();	void fun2();virtual void fun1();virtual int fun3();
};
#pragma pack()

sizeof(K)依然是占用12个字节。
因为每个类只维护一个虚函数指针,所有的虚函数都放在虚函数表中呢。
32位系统中,指针占用4个内存。

  • 再增加一个char类型,大小会变成多少?
#pragma pack(8)
class K
{
public:int a;int b;char c;void fun();	void fun2();virtual void fun1();virtual int fun3();
};
#pragma pack()

答案是:16字节
虽然,#pragma pack为8,但K类最大数据成员大小占4个字节,
所以K类按照4字节对齐。
a占4个字节0-3
b占4个字节4-7
c占一个字节,8-11
虚函数表指针,必须从4的倍数开头,12-15

64位机器

#pragma pack(4)
class K
{
public:int a;int b;void fun();	virtual void fun1();
};
#pragma pack()

答案是:16字节
因为64位机器下,虚函数表指针为8个字节

  • 如果增加一个char 变量
#pragma pack(4)
class K
{
public:int a;int b;char c;void fun();	virtual void fun1();
};
#pragma pack()

答案是:20个字节,因为有效对齐值为4,

地址编号0123
aaaa
地址编号4567
bbbb
地址编号891011
c
地址编号12131415
vptrvptrvptrvptr
地址编号16171819
vptrvptrvptrvptr
  • 如果编译改成8字节对齐呢
#pragma pack(8)
class K
{
public:int a;int b;char c;void fun();	virtual void fun1();
};
#pragma pack()

答案是:24个字节
因为8字节对齐,vptr需要从8的倍数开始存储。

地址编号0123
aaaa
地址编号4567
bbbb
地址编号891011
c
地址编号12131415
地址编号16171819
vptrvptrvptrvptr
地址编号20212223
vptrvptrvptrvptr
http://www.yayakq.cn/news/288259/

相关文章:

  • 科技广告公司网站模板网站 自建空间
  • 网站建设结课郑州不孕不育
  • 建立网站的数据表小学老师在哪个网站做ppt
  • 福建建设厅官方网站微信公众号网页怎么制作
  • 成品网站 子目录打不开嘉兴网站建设设计制作
  • 门户网站建设技术方案开发公司工程部年终工作总结及明年工作计划
  • 成都网站制作维护新站网站收录减少
  • 网站连接微信传奇网址大全
  • 济宁企业做网站怎么做坑人网站
  • 网站导航栏 字体做流量网站
  • 公司网站生成二维码网站当前位置怎么做
  • 百度收录的网站多久更新一次html5网站正在建设中模板下载
  • 393网站丹阳房产网
  • 博山做网站公司泸州小程序定制开发
  • 网站 特效都是用什么软件做的做网站赚钱要多久
  • 优化免费网站建设wordpress上传的图片 x
  • 企业网站如何设计网页建设银行官方网站是什么
  • 美橙互联网站建设进不去公司网站设计哪家公司好
  • dede网站名称不能中文做网站友情链接都写什么
  • 创业如何进行网站建设深圳团购网站设计公司
  • 成都建模培训机构巴彦淖尔seo
  • 有一个网站是做釆购的是什么网辽宁建设工程信息网专家库官网
  • 网站设计下载wordpress 格局调整
  • 网站在哪里建立获奖网站设计
  • 小游戏网站代码谷歌推广网站怎么做
  • 湖南网站建设哪家有wordpress注册怎么设置密码
  • 网站子站建设网站网站开发逻辑
  • 湖南网站备案注销精准营销算法
  • 广东购物网站建设哪家好购物网站建设价位
  • 门户网站建设单位资质要求商贸有限公司章程范本