= sizeof(int) + sizeof(char *) 數(shù)據(jù)包創(chuàng)建 但是在開辟內(nèi)存時, 需要調(diào)用兩次malloc ,第一次給結(jié)構(gòu)體分配內(nèi)存,第二次給成員data分配內(nèi)存: if ((pbuffer = (struct point_buffer *) malloc ( sizeof (stru" />

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

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

指針數(shù)據(jù)包

相信大多數(shù)人會將定長數(shù)組換為 指針 , 每次使用時動態(tài)的開辟 CURR_LENGTH 大小的空間, 因為這樣可以避免造成 MAX_LENGTH - CURR_LENGTH 空間的浪費, 只浪費了一個指針域的空間.

  • 數(shù)據(jù)包定義
struct point_buffer
{
    int     len;
    char    *data;
};
  • 數(shù)據(jù)結(jié)構(gòu)大小

考慮對齊, 那么數(shù)據(jù)結(jié)構(gòu)的大小 >= sizeof(int) + sizeof(char *)

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

但是在開辟內(nèi)存時, 需要調(diào)用兩次malloc ,第一次給結(jié)構(gòu)體分配內(nèi)存,第二次給成員data分配內(nèi)存:

if ((pbuffer = (struct point_buffer *)malloc(sizeof(struct point_buffer))) != NULL)
    {
        pbuffer- >len = CURR_LENGTH;
        if ((pbuffer- >data = (char *)malloc(sizeof(char) * CURR_LENGTH)) != NULL)
        {
            memcpy(pbuffer- >data, "Hello World", CURR_LENGTH);


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

釋放也需要調(diào)用兩次free函數(shù) ,先釋放數(shù)據(jù)域指針,再釋放結(jié)構(gòu)體指針:

/// 銷毀
    free(pbuffer- >data);
    free(pbuffer);
    pbuffer = NULL;
  • 優(yōu)點 :不會造成空間的大量浪費,只多使用了一個指針大小的空間
  • 缺點 :開辟空間時需要額外開辟數(shù)據(jù)域的空間,釋放時也需要先釋放數(shù)據(jù)域的空間。假如用戶不知道這個數(shù)據(jù)包創(chuàng)建的具體細(xì)節(jié),有可能會只釋放結(jié)構(gòu)體指針,不釋放數(shù)據(jù)域指針。因此容易造成內(nèi)存泄露。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140722
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    484

    瀏覽量

    71073
  • 數(shù)據(jù)包
    +關(guān)注

    關(guān)注

    0

    文章

    269

    瀏覽量

    24919
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    使用UART FIFO緩沖區(qū)時,緩沖區(qū)中的數(shù)據(jù)有時會損壞的原因?

    我在使用 UART FIFO 緩沖區(qū)時遇到了以下問題。 問題描述: 當(dāng)通過兩個 UART 通道使用完整的 UART FIFO 緩沖區(qū)并通過兩個通道進行通信時,緩沖區(qū)中的數(shù)據(jù)有時會損壞,
    發(fā)表于 03-06 06:59

    ESP8266有雙緩沖區(qū)嗎?

    我想實時傳輸一些信號的測量數(shù)據(jù)。信號的采樣周期為 1 ms。我想每 500 毫秒發(fā)送 2048 字節(jié)(一個數(shù)據(jù)包)。ESP8266有雙緩沖區(qū)(2x 2048字節(jié))嗎?其想法是計數(shù)填充一個緩沖區(qū)
    發(fā)表于 07-16 07:29

    基于ARM和FPGA的環(huán)形緩沖區(qū)接口設(shè)計方案

    公司的V5系列SX95T型FPGA組成。物理層最高速率為1Mb/s,通過變化來自應(yīng)用層的數(shù)據(jù)包大小和的間隔來改變用戶速率,用以測試ARM和FPGA的數(shù)據(jù)緩沖區(qū)和匹配功能。實際測試和運行表明,此方案
    發(fā)表于 05-30 05:00

    如何檢測數(shù)據(jù)包丟失?

    您好,我想做一個回環(huán)字體(發(fā)送一個IP地址和MAC地址反轉(zhuǎn)的rx),具有最好的性能(這是對網(wǎng)絡(luò)段進行速度測試)。我可以將rx緩沖區(qū)切換到tx緩沖區(qū)(以避免復(fù)制)嗎?你能給我一個源代
    發(fā)表于 03-13 08:56

    一文讀懂路由器緩沖區(qū)大小的重要性

    對于網(wǎng)絡(luò)而言,數(shù)據(jù)包在網(wǎng)線上的時候,絕對安全,絕對是全速前進,最危險的就是到達(dá)轉(zhuǎn)發(fā)設(shè)備內(nèi)部,設(shè)備處理數(shù)據(jù)包帶來的固有延遲導(dǎo)致數(shù)據(jù)包必須有機會被緩沖,處理加速比一定要和
    發(fā)表于 10-15 09:47 ?4778次閱讀

    CPU與GPU維護數(shù)據(jù)結(jié)構(gòu)來保證環(huán)形緩沖區(qū)的正確工作

    CPU 和 GPU 將各自維護一些數(shù)據(jù)結(jié)構(gòu)來保證環(huán)形緩沖區(qū)的正確工作。這些 數(shù)據(jù)結(jié)構(gòu)有緩沖區(qū)的基地址,緩沖區(qū)大小,寫
    的頭像 發(fā)表于 03-30 15:01 ?6693次閱讀
    CPU與GPU維護<b class='flag-5'>數(shù)據(jù)</b>結(jié)構(gòu)來保證環(huán)形<b class='flag-5'>緩沖區(qū)</b>的正確工作

    環(huán)形緩沖區(qū)的實現(xiàn)原理

    在通信程序中,經(jīng)常使用環(huán)形緩沖區(qū)作為數(shù)據(jù)結(jié)構(gòu)來存放通信中發(fā)送和接收的數(shù)據(jù)。環(huán)形緩沖區(qū)是一個先進先出的循環(huán)緩沖區(qū),可以向通信程序提供對
    的頭像 發(fā)表于 03-22 10:03 ?7841次閱讀
    環(huán)形<b class='flag-5'>緩沖區(qū)</b>的實現(xiàn)原理

    緩沖區(qū)是啥意思 STM32串口數(shù)據(jù)接收之環(huán)形緩沖區(qū)

    緩沖區(qū)顧名思義是緩沖數(shù)據(jù)用的。實現(xiàn)緩沖區(qū)最簡單的辦法時,定義多個數(shù)組,接收一
    的頭像 發(fā)表于 07-22 15:33 ?1.1w次閱讀

    STM32串口數(shù)據(jù)接收 --環(huán)形緩沖區(qū)

    STM32串口數(shù)據(jù)接收 --環(huán)形緩沖區(qū)環(huán)形緩沖區(qū)簡介??在單片機中串口通信是我們使用最頻繁的,使用串口通信就會用到串口的數(shù)據(jù)接收與發(fā)送,環(huán)形緩沖區(qū)
    發(fā)表于 12-28 19:24 ?31次下載
    STM32串口<b class='flag-5'>數(shù)據(jù)</b>接收 --環(huán)形<b class='flag-5'>緩沖區(qū)</b>

    數(shù)據(jù)包的發(fā)送流程

    一個數(shù)據(jù)包,從聊天框里發(fā)出,消息會從聊天軟件所在的用戶空間拷貝到內(nèi)核空間的發(fā)送緩沖區(qū)(send buffer),數(shù)據(jù)包就這樣順著傳輸層、網(wǎng)絡(luò)層,進入到數(shù)據(jù)鏈路層,在這里
    的頭像 發(fā)表于 08-19 14:38 ?2954次閱讀

    零長數(shù)組如何使用定長定義數(shù)據(jù)緩沖區(qū)

    零長數(shù)組 請先思考以下問題: C語言中,數(shù)組長度是否可以為0? 如果要接收一個不定長數(shù)據(jù)包,你會如何定義數(shù)據(jù)緩沖區(qū)? 第一個問題 : 在標(biāo)準(zhǔn)C語言中,沒有長度為0的數(shù)組,但在 GNU
    的頭像 發(fā)表于 09-27 14:58 ?949次閱讀

    變長數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)定義

    用方便的呢? GNU C 的0長度數(shù)組(變長數(shù)組/柔性數(shù)組)就是這樣一個擴展. 對于 0長數(shù)組 的這個特點,很容易構(gòu)造出變成結(jié)構(gòu)體,如緩沖區(qū)數(shù)據(jù)包等等: 數(shù)據(jù)結(jié)構(gòu)定義 // 0長度數(shù)
    的頭像 發(fā)表于 09-27 15:08 ?939次閱讀

    C++環(huán)形緩沖區(qū)設(shè)計與實現(xiàn)

    一、環(huán)形緩沖區(qū)基礎(chǔ)理論解析(Basic Theory of Circular Buffer) 1.1 環(huán)形緩沖區(qū)定義與作用(Definition and Function of Circular
    的頭像 發(fā)表于 11-09 11:21 ?2999次閱讀
    C++環(huán)形<b class='flag-5'>緩沖區(qū)</b>設(shè)計與實現(xiàn)

    交換機與路由器緩沖區(qū):尋找完美大小

    學(xué)術(shù)界和工業(yè)界一直備受爭議。本文探討了高端路由器中數(shù)據(jù)包緩沖的歷史和演變,以期概述當(dāng)前的實踐和未來的趨勢。 網(wǎng)絡(luò)芯片中的緩沖區(qū) 在典型的路由器/交換機 ASIC 中,會發(fā)現(xiàn)三種類型的數(shù)據(jù)包
    的頭像 發(fā)表于 04-11 16:56 ?2025次閱讀
    交換機與路由器<b class='flag-5'>緩沖區(qū)</b>:尋找完美大小

    RTOS的流緩沖區(qū)機制解析

    SAFERTOS中的流緩沖區(qū)(Stream buffer)機制,可以實現(xiàn)任務(wù)到任務(wù)或中斷到任務(wù)之間的通信。字節(jié)流是由發(fā)送方寫入緩沖區(qū),接收方讀取緩沖區(qū)數(shù)據(jù)。流
    的頭像 發(fā)表于 02-14 11:33 ?476次閱讀
    RTOS的流<b class='flag-5'>緩沖區(qū)</b>機制解析
    主站蜘蛛池模板: 国产一区二区三区影院 | 精品四虎免费观看国产高清午夜 | 天天干天天爽天天射 | 亚洲国产成人精品不卡青青草原 | a级黄色毛片三个搞一 | 国产亚洲精品仙踪林在线播放 | 日本三级带日本三级带黄首页 | 激情综合色综合啪啪开心 | 亚洲成熟 | 四虎国产精品永免费 | www.激情五月| 色综合久久中文综合网 | www天天操| 日韩在线视频一区二区三区 | 狠狠躁夜夜躁人人爽天天段 | 国产福利2021最新在线观看 | 国内露脸夫妇交换精品 | 国产精品久久久久久久免费大片 | 色婷婷综合久久久 | 综合免费一区二区三区 | 色多多福利 | 大学生毛片| 亚洲一区二区三区高清 | 色视频久久 | 国产精品推荐天天看天天爽 | 色女人网 | 亚欧有色亚欧乱色视频 | 午夜剧场官网 | 依依成人精品无v国产 | 完全免费在线视频 | 天天综合天天看夜夜添狠狠玩 | 乱子伦xxxx厨房 | 玖玖爱在线播放 | 狠狠狠色丁香婷婷综合激情 | 啪啪免费网站 | 在线天堂bt种子资源 | 亚洲偷图色综合色就色 | 亚洲午夜精品在线 | 欧美资源在线观看 | 在线看你懂 | 日本69sex护士|