字節對齊 變長數組 節省帶寬的方式

typedef struct
{
    size_t cbSize;
    char   data[0];
}UnkownSizeStruct;

變長結構如上定義,

在msvc編譯器中可使用

#pragma pack(1)

來定義字節對齊方式,否則在編譯器定義結構體時會保留很多空白區域,網絡傳輸時當時不需要傳輸這些東西,相當浪費帶寬資源。

不定長結構體唯一的作用就是指明一個cbSize,說到底,其實這個定長結構結構體其實就是定義一個獲取結構長度方法,不定義它也完全可以。

比如:

void * pData = ................;
size_t dataSize = *(size_t*)pData;
//如果用變長結構體則是
UnkownSizeStruct * pStruct = (UnkownSizeStruct*)pData;
size_t dataSize = pStruct->cbSize;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章