ProDeveloperTutorial.com

教程和编程解决方案
菜单
  • Shell脚本
  • 系统设计
  • Linux系统编程
  • 4g LTE
  • 编码问题
  • C
  • C ++
  • DSA
  • GIT

CPP第45章:CPP国彩网填充和填充

前开发者教程 2020年2月26日

在本教程中,我们将学习有关国彩网填充的以下主题。

1.什么是国彩网填充?

2.如何避免国彩网填充?

3.如何避免使用宏填充国彩网?

 

1.什么是国彩网填充?

填充是向国彩网或类添加更多字节的概念,因此访问将更容易。

 

我们将借助一个示例来理解它。

在下面的示例中,我们有2个字符变量和一个整数变量。根据我们的计算,空格应为2个char变量为4个字节,为1个int变量为4个字节。我们将执行程序并进行检查。

 

#include <iostream>
using namespace std;




struct MyStruct

{

char c1;

int num;

char c;

};




int main(void)

{

MyStruct obj;

cout<<"size is "<<sizeof(obj);


return 0;

}

输出:

size is 12

 

如您所见,char变量也占用了4个字节。因此,总大小为4 + 4 + 4 = 12个字节。

这称为国彩网填充。编译器会进行此优化,因此可以高效地读取和写入内存。

 

2.如何避免国彩网填充?

 

为了避免国彩网填充,您需要将所有具有较高内存的数据类型放在开头,将较低数据类型放在结尾。

 

#include <iostream>
using namespace std;


struct MyStruct

{

int num;

char c1;

char c;


};




int main(void)

{

MyStruct obj;

cout<<"size is "<<sizeof(obj);




return 0;

}

 

输出:

size is 8

现在您可以看到大小减小为8。

 

3.如何避免使用宏填充国彩网?

 

您还可以通过添加宏“ #pragma pack(1)”来避免国彩网填充。

 

#include <iostream>
using namespace std;

#pragma pack (1)

struct MyStruct

{

char c1;

int num;

char c;

};




int main(void)

{

MyStruct obj;

cout<<"size is "<<sizeof(obj);




return 0;

}


输出:

size is 6

 

 

 

该网站上可用的教程列表:

C编程20+章C ++编程80+章
100多个编码问题数据国彩网和算法85+章
系统设计20+章Shell脚本编写12章
4g LTE 60+章节最常见的编码问题
5G NR 50+章Linux系统编程20+章

 

分享
电子邮件
鸣叫
领英
Reddit
绊倒
Pinterest的
上一篇文章
下一篇

关于作者

前开发者教程

每天我们都会讨论竞争性编程问题,请加入我们的网站:   电报频道

ProDeveloperTutorial.com

教程和编程解决方案
版权© 2020 ProDeveloperTutorial.com
从以下课程获得热门课程: 教育性的

  • <ins id="Vnz1kwZ" class="V4HymSg"><base id="ujRKh8v" class="uvCbneW"><p></p></base></ins>
  • <ins id="ii6gUW2" class="iaBFfm4"><tbody class="UFfWX6u"><footer id="NYzAVox"></footer></tbody></ins>

      <ins id="ckODK4W"><q id="jwf3u0d" class="jWdhdjX"></q></ins>





          <blockquote class="qtSzqFe"><basefont class="yU5uR8n"></basefont></blockquote>