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

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

3天內不再提示

變長數(shù)據包數(shù)據結構定義

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

變長數(shù)據包

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

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

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

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

sizeof(struct zero_buffer) = sizeof(int)

  • 數(shù)據包創(chuàng)建

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

///  開辟
    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;
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7581

    瀏覽量

    135584
  • 數(shù)據包
    +關注

    關注

    0

    文章

    244

    瀏覽量

    24325
  • 數(shù)據結構

    關注

    3

    文章

    569

    瀏覽量

    40063
收藏 人收藏

    評論

    相關推薦

    不同數(shù)據結構定義代碼

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

    什么是數(shù)據結構(Data Structrue)

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

    數(shù)據結構

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

    數(shù)據結構鏈表的基本操作

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

    OBS邊緣節(jié)點中變長數(shù)據包突發(fā)匯聚實現(xiàn)

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

    數(shù)據結構教程,下載

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

    網絡數(shù)據包捕獲機制研究

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

    基于Jpcap的數(shù)據包捕獲器的設計與實現(xiàn)

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

    數(shù)據包過濾原理

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

    什么是數(shù)據包

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

    數(shù)據結構是什么_數(shù)據結構有什么用

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

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

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

    網絡數(shù)據包分析軟件wireshark的基本使用

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

    NetApp的數(shù)據結構是如何演變的

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

    如何使用指針數(shù)據包定義數(shù)據緩沖區(qū)

    , 只浪費了一個指針域的空間. 數(shù)據包定義 struct point_buffer{ int len; char * data ;}; 數(shù)據結構大小 考慮對齊, 那么數(shù)據結構的大小 >
    的頭像 發(fā)表于 09-27 15:01 ?431次閱讀