在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

變長數據包數據結構定義

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-09-27 15:08 ? 次閱讀

變長數據包

定長數組使用方便, 但是卻浪費空間, 指針形式只多使用了一個指針的空間, 不會造成大量空間分浪費, 但是使用起來需要多次分配, 多次釋放, 那么有沒有一種實現方式能夠既不浪費空間, 又使用方便的呢?

GNU C 的0長度數組(變長數組/柔性數組)就是這樣一個擴展. 對于0長數組的這個特點,很容易構造出變成結構體,如緩沖區,數據包等等:

  • 數據結構定義
//  0長度數組
struct zero_buffer
{
    int     len;
    char    data[0];
};
  • 數據結構大小

這樣的變長數組常用于網絡通信中構造不定長數據包, 不會浪費空間浪費網絡流量, 因為char data[0]; 只是個數組名, 是不占用存儲空間的,

sizeof(struct zero_buffer) = sizeof(int)

  • 數據包創建

我們使用的時候, 只需要開辟一次空間即可:

///  開辟
    if ((zbuffer = (struct zero_buffer *)malloc(sizeof(struct zero_buffer) + sizeof(char) * CURR_LENGTH)) != NULL)
    {
        zbuffer- >len = CURR_LENGTH;
        memcpy(zbuffer- >data, "Hello World", CURR_LENGTH);


        printf("%d, %sn", zbuffer- >len, zbuffer- >data);
    }
  • 釋放

釋放也是一樣的, 一次釋放即可:

///  銷毀
    free(zbuffer);
    zbuffer = NULL;
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136827
  • 數據包
    +關注

    關注

    0

    文章

    261

    瀏覽量

    24394
  • 數據結構
    +關注

    關注

    3

    文章

    573

    瀏覽量

    40130
收藏 人收藏

    評論

    相關推薦

    不同數據結構定義代碼

    數據結構是相互之間存在一種或多種特定關系的數據元素的集合。
    的頭像 發表于 11-29 14:13 ?643次閱讀

    什么是數據結構(Data Structrue)

    的一個一個元素數據對象:具有相同特性的數據元素的集合結構數據元素之間具有的關系(聯系) 二.  數據結構
    發表于 02-09 17:17

    數據結構

    1.數據結構的概念 所謂數據結構是指由某一數據對象及該對象中所有數據成員之間的關系組成的集合。成員之間的關系有很多種,最常見的是前后件關系。 2.
    發表于 03-04 14:13

    數據結構鏈表的基本操作

    嵌入式學習基礎-數據結構鏈表的基本操作鏈表節點采用結構體的方式進行定義,下面是最基礎的定義只有一個數據data,*pNext用于指向下一個節
    發表于 12-22 08:05

    OBS邊緣節點中變長數據包突發匯聚實現

    基于光突發交換邊緣節點在組裝數據包前要采用交換陣對其進行突發匯聚,描述了交換陣常用的串行輸入輪循算法,根據邊緣節點中數據包變長突發匯聚的特點提出了變長串行輸
    發表于 04-19 19:16 ?18次下載

    數據結構教程,下載

    1. 數據結構的基本概念 2. 算法與數據結構3. C語言的數據類型及其算法描述要點4. 學習算法與數據結構的意義與方法
    發表于 05-14 17:22 ?0次下載
    <b class='flag-5'>數據結構</b>教程,下載

    網絡數據包捕獲機制研究

    網絡數據包捕獲技術,是實現入侵檢測、網絡安全審計的關鍵技術。本文改進了國外傳統的數據包捕獲函數庫Libpcap 捕獲數據包的方案。原方案在網卡捕獲到數據包后,
    發表于 09-01 10:09 ?9次下載

    基于Jpcap的數據包捕獲器的設計與實現

    本文研究了以太網數據包的捕獲機制,實現了基于JPcap的網絡數據包捕獲工具,其基本原理是通過調用Jpcap庫捕獲本地網絡上的所有數據包,然后對數據包進行協議解碼,從而可以實
    發表于 01-15 13:47 ?38次下載

    數據包過濾原理

    數據包過濾技術數據包過濾原理              數據包過濾技術是防火墻最常用的技術。對于一
    發表于 06-16 23:44 ?4613次閱讀
    <b class='flag-5'>數據包</b>過濾原理

    什么是數據包

    什么是數據包? 您在互聯網上做的一切都涉及到數據包。例如,您接收的每個網頁都以一系列數據包的形式傳入,您發送的每封電子郵件都以一系列數據包的形式傳出。以
    發表于 08-03 09:13 ?2025次閱讀

    數據結構是什么_數據結構有什么用

    數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高
    發表于 11-17 14:45 ?1.6w次閱讀
    <b class='flag-5'>數據結構</b>是什么_<b class='flag-5'>數據結構</b>有什么用

    什么是數據結構?為什么要學習數據結構數據結構的應用實例分析

    本文檔的主要內容詳細介紹的是什么是數據結構?為什么要學習數據結構數據結構的應用實例分析包括了:數據結構在串口通信當中的應用,數據結構在按鍵
    發表于 09-26 15:45 ?14次下載
    什么是<b class='flag-5'>數據結構</b>?為什么要學習<b class='flag-5'>數據結構</b>?<b class='flag-5'>數據結構</b>的應用實例分析

    網絡數據包分析軟件wireshark的基本使用

    Wireshark(前稱Ethereal)是一個網絡數據包分析軟件。網絡數據包分析軟件的功能是截取網絡數據包,并盡可能顯示出最為詳細的網絡數據包數據
    的頭像 發表于 09-29 14:48 ?3035次閱讀

    NetApp的數據結構是如何演變的

    統一數據跨分布式資源進行管理,以實現數據移動的一致性和控制,安全、可見性、保護和訪問。 本文定義數據結構及其體系結構,討論了
    發表于 08-25 17:15 ?0次下載
    NetApp的<b class='flag-5'>數據結構</b>是如何演變的

    如何使用指針數據包定義數據緩沖區

    , 只浪費了一個指針域的空間. 數據包定義 struct point_buffer{ int len; char * data ;}; 數據結構大小 考慮對齊, 那么數據結構的大小 >
    的頭像 發表于 09-27 15:01 ?495次閱讀
    主站蜘蛛池模板: 色视频一区二区三区 | 香港三级在线视频 | 国产精品福利一区二区亚瑟 | 免费人成激情视频在线观看冫 | 一二三区乱码一区二区三区码 | 免费爱爱小视频 | 色中文网| 天天夜天天干 | 日韩精品三级 | 99精品视频在线播放2 | 中文字幕在线观看第一页 | 久久九九色 | 一级片影院 | 成视频年人黄网站免费视频 | 啊用力太猛了啊好深视频免费 | 手机看片1024欧美 | 国产一级特黄aa大片在线 | 亚洲一区二区三区在线 | 国产性老妇女做爰在线 | 亚洲激情四射 | 97国内精品久久久久久久影视 | 亚洲天天操 | 亚洲婷婷国产精品电影人久久 | 亚洲成年人在线 | 日本番囗 | 四虎影视永久在线精品免费播放 | 在线毛片免费 | 国产图片区| 国产性猛交xx乱 | 国产永久免费爽视频在线 | 色综合天天网 | 国产a一级毛片午夜剧场14 | 免费在线观看黄 | 黄色日本视频 | 久久黄色影片 | 日本一区二区免费在线观看 | 欧美一级特黄aa大片 | 日本免费三级网站 | 亚洲性色成人 | 黄 色 录像成 人播放免费 | 日韩精品一区二区三区免费视频 |