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

哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

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

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-09-27 15:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

相信大多數(shù)人會(huì)將定長數(shù)組換為 指針 , 每次使用時(shí)動(dòng)態(tài)的開辟 CURR_LENGTH 大小的空間, 因?yàn)檫@樣可以避免造成 MAX_LENGTH - CURR_LENGTH 空間的浪費(fèi), 只浪費(fèi)了一個(gè)指針域的空間.

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

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

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

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

    關(guān)注

    183

    文章

    7646

    瀏覽量

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

    關(guān)注

    1

    文章

    484

    瀏覽量

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

    關(guān)注

    0

    文章

    270

    瀏覽量

    25657
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    STM32串口數(shù)據(jù)接收 --環(huán)形緩沖區(qū)環(huán)形緩沖區(qū)簡介??在單片機(jī)中串口通信是我們使用最頻繁的,使用串口通信就會(huì)用到串口的數(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ā)送流程

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

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

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

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

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

    C++環(huán)形緩沖區(qū)設(shè)計(jì)與實(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 ?4220次閱讀
    C++環(huán)形<b class='flag-5'>緩沖區(qū)</b>設(shè)計(jì)與實(shí)現(xiàn)

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

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

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

    SAFERTOS中的流緩沖區(qū)(Stream buffer)機(jī)制,可以實(shí)現(xiàn)任務(wù)到任務(wù)或中斷到任務(wù)之間的通信。字節(jié)流是由發(fā)送方寫入緩沖區(qū),接收方讀取緩沖區(qū)數(shù)據(jù)。流
    的頭像 發(fā)表于 02-14 11:33 ?1378次閱讀
    RTOS的流<b class='flag-5'>緩沖區(qū)</b>機(jī)制解析
    汉源县| 师宗县| 阿勒泰市| 锡林郭勒盟| 泗水县| 汝南县| 金寨县| 灵丘县| 玉溪市| 修武县| 鄂伦春自治旗| 新化县| 闸北区| 疏附县| 合山市| 西乌珠穆沁旗| 邢台市| 老河口市| 武平县| 屏东县| 岳阳市| 嘉兴市| 金昌市| 建德市| 洛隆县| 靖江市| 丹巴县| 房山区| 昌邑市| 申扎县| 通辽市| 郁南县| 贵南县| 左权县| 丰城市| 渝北区| 宜兰县| 开鲁县| 新干县| 宁远县| 巴青县|