在本教程中,我们将学习有关国彩网填充的以下主题。
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+章 |