欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++結(jié)構(gòu)體字節(jié)對齊示例

 更新時間:2022年06月23日 10:15:39   作者:Bug挖掘機  
這篇文章主要為大家介紹了C++結(jié)構(gòu)體字節(jié)對齊示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

示例代碼

#include <iostream>    //輸入輸出流
using namespace std;
#include <vector>      //容器
struct MyStruct
{
   unsigned char start1;
   unsigned char start2;
   unsigned char test1[7];
};
struct header
{
   unsigned char by; //1字節(jié)
   unsigned int dw; //4字節(jié)
   int flag; //4字節(jié)
};
typedef unsigned char UCHAR;    //定義無符號字符變量的別名
typedef unsigned int UINT;      //定義無符號整型變量的別名
const int PREAMBLE_LENGTH = 7;   //定義整型常量,前導碼占7個字節(jié)
const int START_LENGTH = 1;      //幀前定界符占1個字節(jié)
const int DESADD_LENGTH = 6;     //目的地址
const int SOURCEADD_LENGTH = 6;  //源地址
const int TYPE_LENGTH = 2;       //類型字段
const int FCS_LENGTH = 4;        //幀校驗地址
class MyFrame1
{
public:
   UCHAR preamble[PREAMBLE_LENGTH];     //前導碼
   UCHAR start;                         //幀前定界符,標明下一個字節(jié)為目的MAC字段
   UCHAR dest_add[DESADD_LENGTH];       //指明幀的目的地址
   UCHAR source_add[SOURCEADD_LENGTH];  //指明幀的源地址
   UCHAR type[TYPE_LENGTH];             //幀中數(shù)據(jù)的協(xié)議類型
   vector <UCHAR> data;                  //vector <UCHAR>占16字節(jié)    定義數(shù)據(jù)的容器存儲數(shù)據(jù)字段
   UCHAR fcs[FCS_LENGTH];               //幀校驗序列
};
int main()
{
   MyStruct struct1;
   cout << sizeof(struct1)<<endl;
   header str1;
   cout << sizeof(str1) << endl;
   MyFrame1 fram1;
   cout << sizeof(fram1) << endl;
    return 0;
}

以上代碼我定義了2個結(jié)構(gòu)體,1個類,類的本質(zhì)也是結(jié)構(gòu)體。因為運行環(huán)境是32位,所以在用sizeof計算結(jié)構(gòu)體或者類的大小時,可能會出現(xiàn)字節(jié)對齊的現(xiàn)象,就是sizeof的結(jié)果是4的整數(shù)倍,從下圖中可以看到struct1結(jié)構(gòu)體變量沒有發(fā)生字節(jié)對齊,而str1結(jié)構(gòu)體變量和fram1類對象的統(tǒng)計大小時,均發(fā)生了字節(jié)對齊現(xiàn)象(str1結(jié)構(gòu)體變量定義了9個字節(jié),對齊到12字節(jié),而MyFrame類原本占42字節(jié),對齊到44字節(jié))

不想讓結(jié)構(gòu)體自動對齊怎么辦

在頭文件當中添加#pragma pack(1)即可

#include <iostream>    //輸入輸出流
using namespace std;
#include <vector>      //容器
#pragma pack(1)         #按1個字節(jié)對齊,這樣相當于就沒有內(nèi)存對齊

添加之后結(jié)果

這樣就不會自動字節(jié)對齊了

以上就是C++結(jié)構(gòu)體字節(jié)對齊示例的詳細內(nèi)容,更多關(guān)于C++結(jié)構(gòu)體字節(jié)對齊的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 輸入一個字符串,取出其中的整數(shù)(實現(xiàn)代碼)

    輸入一個字符串,取出其中的整數(shù)(實現(xiàn)代碼)

    輸入一個字符串,內(nèi)含所有數(shù)字和非數(shù)字字符。將其中連續(xù)的數(shù)字作為一個整數(shù),依次存放到一個數(shù)組中,統(tǒng)計共有多少個整數(shù),并輸出這些數(shù)
    2013-09-09
  • win32 api實現(xiàn)簡單的消息窗口示例

    win32 api實現(xiàn)簡單的消息窗口示例

    這篇文章主要介紹了使用win32 api實現(xiàn)簡單的消息窗口示例,需要的朋友可以參考下
    2014-03-03
  • C++發(fā)送HTTP請求的實現(xiàn)代碼

    C++發(fā)送HTTP請求的實現(xiàn)代碼

    這篇文章主要介紹了C++發(fā)送HTTP請求的實現(xiàn)代碼,需要的朋友可以參考下
    2014-06-06
  • C++實現(xiàn)單詞管理系統(tǒng)

    C++實現(xiàn)單詞管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)單詞管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 異步http listener 完全并發(fā)處理懲罰http懇求的小例子

    異步http listener 完全并發(fā)處理懲罰http懇求的小例子

    異步http listener 完全并發(fā)處理懲罰http懇求的小例子,需要的朋友可以參考一下
    2013-05-05
  • php5系列的apache遠程執(zhí)行漏洞攻擊腳本

    php5系列的apache遠程執(zhí)行漏洞攻擊腳本

    這篇文章主要介紹了php5系列的apache遠程執(zhí)行漏洞攻擊腳本,需要的朋友可以參考下
    2014-06-06
  • 最新評論