欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

你是否真的了解結(jié)構(gòu)體占用了多少字節(jié)?

信盈達(dá) ? 2024-06-04 08:04 ? 次閱讀

結(jié)構(gòu)體成員所占內(nèi)存空間大小

fd536da6-2205-11ef-bd4a-92fbcf53809c.png

一般情況下,如果想知道結(jié)構(gòu)體成員的內(nèi)存占用情況需要:

1、先用結(jié)構(gòu)體在內(nèi)存中開空間

2、使用sizeof(結(jié)構(gòu)體變量.成員名)或者sizeof(結(jié)構(gòu)體指針->成員名)的形式獲取成員在內(nèi)存中所占空間大小,舉例如下:

#include#include
typedef struct{ int id; char ch;}data;
int main(){ data a; // 結(jié)構(gòu)體變量 data *p = (data *)malloc(sizeof(data));
// 結(jié)構(gòu)體變量用點(diǎn)語法 printf("方式一:成員id大?。?d,ch大?。?d\n", sizeof(a.id),sizeof(a.ch));
// 結(jié)構(gòu)體指針用 -> printf("方式二:成員id大?。?d,ch大?。?d\n", sizeof(p->id),sizeof(p->ch));
return 0;}

此方法需要在內(nèi)存中開辟空間。

fd56d5c2-2205-11ef-bd4a-92fbcf53809c.png

在閱讀源碼的時候偶然發(fā)現(xiàn)了一種非常妙的寫法:可以將結(jié)構(gòu)體指針強(qiáng)制指向地址為0的區(qū)域,然后直接用sizeof訪問成員。

printf("方法三:成員id大小:%d,ch大?。?d\n", sizeof(((data *)0)->id),sizeof(((data *)0)->ch));

地址為0的區(qū)域?yàn)楸A魠^(qū),程序運(yùn)行時并不會真正在內(nèi)存中開空間,這里可以理解為借用了0值。

為了通用,可以將這種方法進(jìn)行宏定義:

#define size_of_attribute(Struct, Attribute) sizeof(((Struct*)0)->Attribute)

Struct --- 結(jié)構(gòu)體類型名字

Attribute--- 結(jié)構(gòu)體成員名測試代碼如下,你也快去試一下吧!

#include#include
#define size_of_attribute(Struct, Attribute) sizeof(((Struct*)0)->Attribute)
typedef struct{ int id; char ch;}data;
typedef struct{ double d; short m;}data2;
int main(){ printf("%d\n",size_of_attribute(data,ch)); printf("%d\n",size_of_attribute(data2,d)); return 0;}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3060

    瀏覽量

    74353
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    653

    瀏覽量

    29473
  • 結(jié)構(gòu)體
    +關(guān)注

    關(guān)注

    1

    文章

    130

    瀏覽量

    10872
收藏 人收藏

    評論

    相關(guān)推薦

    結(jié)構(gòu)成員的順序會影響結(jié)構(gòu)的大小嗎

    相同的結(jié)構(gòu)成員,如果把順序調(diào)整一下,會不會影響結(jié)構(gòu)的大??? 答案是會的,這主要跟字節(jié)對齊有關(guān)。 比如這樣的
    的頭像 發(fā)表于 11-25 16:24 ?273次閱讀

    深度了解SiC的晶體結(jié)構(gòu)

    SiC是由硅(Si)和碳(C)按1:1的化學(xué)計量比組成的晶體,因其內(nèi)部結(jié)構(gòu)堆積順序的不同,形成不同的SiC多型,本篇章帶你了解SiC的晶體結(jié)構(gòu)及其可能存在的晶體缺陷。
    的頭像 發(fā)表于 11-14 14:57 ?1263次閱讀
    深度<b class='flag-5'>了解</b>SiC的晶體<b class='flag-5'>結(jié)構(gòu)</b>

    C語言和C++中結(jié)構(gòu)的區(qū)別

    同樣是結(jié)構(gòu),看看在C語言和C++中有什么區(qū)別?
    的頭像 發(fā)表于 10-30 15:11 ?358次閱讀

    字節(jié)豆包推出AI智能耳機(jī)

    字節(jié)跳動旗下豆包品牌近日推出了其首款A(yù)I智能耳機(jī)——Ola Friend。這款耳機(jī)采用了開放式設(shè)計,單耳重量僅為6.6克,佩戴舒適輕盈。
    的頭像 發(fā)表于 10-10 16:55 ?633次閱讀

    服務(wù)器cpu占用率高怎么解決

    服務(wù)器CPU占用率高是一個常見的問題,它可能會導(dǎo)致服務(wù)器性能下降,甚至影響用戶體驗(yàn)。 一、了解服務(wù)器CPU占用率高的原因 應(yīng)用程序問題 應(yīng)用程序設(shè)計不合理,導(dǎo)致CPU占用率高 應(yīng)用程序
    的頭像 發(fā)表于 10-10 15:14 ?1133次閱讀

    認(rèn)識貼片電阻嗎,對他了解多少?

    認(rèn)識貼片電阻嗎,對他了解多少?
    的頭像 發(fā)表于 08-27 15:49 ?611次閱讀
    <b class='flag-5'>你</b>認(rèn)識貼片電阻嗎,<b class='flag-5'>你</b>對他<b class='flag-5'>了解</b>多少?

    【GD32 MCU 入門教程】六、GD32 MCU 選項字節(jié)設(shè)置及解除方法

    您在使用GD32過程中是否遇到過芯片反復(fù)復(fù)位,代碼無法更新,代碼一直執(zhí)行在0x1fffxxxx區(qū)域,或代碼執(zhí)行在SRAM區(qū)域的情況?如果有遇到這類現(xiàn)象是否找到原因呢?如果沒找到是否檢查過選項
    的頭像 發(fā)表于 08-26 09:43 ?792次閱讀
    【GD32 MCU 入門教程】六、GD32 MCU 選項<b class='flag-5'>字節(jié)</b>設(shè)置及解除方法

    ota升級的庫中,結(jié)構(gòu)upgrade_server_info中pespconn的作用是什么?

    check_cb; struct espconn *pespconn; }; 這個結(jié)構(gòu)中已經(jīng)有ip,port,pespconn這個結(jié)構(gòu)
    發(fā)表于 07-12 06:33

    知道一成型電感多少錢嗎

    知道一成型電感多少錢嗎 gujing 編輯:谷景電子 一成型電感是電子電路中特別重要的一種零件,大家在選擇一成型電感的時候都會比較重視它的價格!一
    的頭像 發(fā)表于 07-06 10:46 ?1040次閱讀

    真的了解駐波比嗎?到底什么是電壓駐波比?

    真的了解駐波比嗎?到底什么是電壓駐波比?在很長一段時間內(nèi),小編對駐波比的了解僅限于這樣一個概念:它是一個用于描述波反射大小的物理量,取值范圍[1, ∞],值越小,就表示反射越小,值越
    的頭像 發(fā)表于 05-29 14:27 ?4554次閱讀
    <b class='flag-5'>你</b><b class='flag-5'>真的</b><b class='flag-5'>了解</b>駐波比嗎?到底什么是電壓駐波比?

    嵌入式中C語言結(jié)構(gòu)基本實(shí)現(xiàn)

    C語言中的數(shù)組只能允許程序員定義存儲相同類型數(shù)據(jù)。但是結(jié)構(gòu)是C語言編程中允許您存儲不同數(shù)據(jù)類型的數(shù)據(jù)。 結(jié)構(gòu)的定義 ????要想定義結(jié)構(gòu),必須用到 struct 關(guān)鍵字,struct
    的頭像 發(fā)表于 05-11 08:49 ?1132次閱讀
    嵌入式中C語言<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>基本實(shí)現(xiàn)

    Freertos隊列項里的字節(jié)長度是否可以獲取?

    最近剛學(xué)Freertos, 看到可以獲取Freertos隊列長度,但是隊列項里的字節(jié)長度是否可以獲取? 因?yàn)轫椖恐嘘犃兄袝娣挪欢ㄩL字節(jié),需要對隊列中的數(shù)據(jù)分揀,每次分揀的時候遍歷所有隊列項長度,有點(diǎn)浪費(fèi),請教了
    發(fā)表于 04-29 07:17

    真的了解110配線架嗎

    110配線架是一種常見的網(wǎng)絡(luò)設(shè)備,主要用于計算機(jī)網(wǎng)絡(luò)中數(shù)據(jù)和電話傳輸?shù)呐渚€系統(tǒng)。作為綜合布線系統(tǒng)的核心產(chǎn)品,它起著傳輸信號的靈活轉(zhuǎn)接、靈活分配以及綜合統(tǒng)一管理的作用。綜合布線系統(tǒng)的最大特性是利用同一接口和同一種傳輸介質(zhì),讓各種不同信息在上面?zhèn)鬏敚@一特性的實(shí)現(xiàn)主要通過連接不同信息的配線架之間的跳接來完成。 110配線架早期主要用于網(wǎng)絡(luò)系統(tǒng)配線,現(xiàn)在則主要用于電話系統(tǒng)配線,俗稱魚骨架。一般來說,一個110配線架為
    的頭像 發(fā)表于 04-23 11:46 ?1793次閱讀

    用FreeRTOS使用隊列怎么發(fā)送一個結(jié)構(gòu)呢?

    怎么使用隊列,發(fā)送一個12個字節(jié)結(jié)構(gòu)呢? osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec
    發(fā)表于 04-17 07:35

    C語言結(jié)構(gòu)史上最詳細(xì)的講解【軟件干貨】

    struct結(jié)構(gòu)數(shù)據(jù)類型 前言 我們知道,在C語言中有一些基本的數(shù)據(jù)類型,如?char?int?float?long?double?string(c99) 等等數(shù)據(jù)類型,他們可以表示一些事物
    的頭像 發(fā)表于 03-28 17:52 ?858次閱讀