chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

如何使用union來了解內(nèi)存?

Linux愛好者 ? 來源:嵌入式Linux ? 作者:寫代碼的籃球球癡 ? 2021-06-22 17:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天一個讀者朋友給我發(fā)的一段代碼,這段代碼讓他有了疑惑。

代碼如下:

#include “stdio.h”int main()

{

typedef union{

short i;

char j[2];

}DATA;

DATA a;

a.j[0] = 10;

a.j[1] = 1;

printf(“%x

”,a.i);

return 0;

}

這里說一個問題,我們從printf上看到的不一定我們想看到的,所以我們需要去變量的內(nèi)存地址一探究竟,一定要了解內(nèi)存的布局,對內(nèi)存有所了解。

上面注釋的代碼,在我的電腦中運(yùn)行的結(jié)果不相同,所以要看printf的準(zhǔn)確輸出,應(yīng)該初始化變量a。

使用gdb來查看地址,可以準(zhǔn)確看到變量內(nèi)存中的數(shù)據(jù)。

什么是大小端?

這個問題在之前的文章說過,這里再重新提一下

大端模式(Big-endian),是指數(shù)據(jù)的高字節(jié),保存在內(nèi)存的低地址中,而數(shù)據(jù)的低字節(jié),保存在內(nèi)存的高地址中

小端模式(Little-endian),是指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址中

我們用這個再來看看我們的程序

#include “stdio.h”int main()

{

typedef union{

short i;

char j[2];

}DATA;

DATA a;

//a.j[0] = 10;

a.j[1] = 1;

printf(“%x

”,a.i);

return 0;

}

j[0]在低地址,j[1]在高地址,這個沒有什么意見吧?

內(nèi)存就是一個尺子,它是不斷變長的,所以這個地址也是慢慢變大的,沒有任何問題吧。

然后,我們可以看看現(xiàn)在的輸出,從上面的輸出可以看到輸出100,也就是j[1]在高地址,j[0]在低地址,那這個計算機(jī)就是小端模式。

也可以通過查看內(nèi)存地址來確認(rèn)

責(zé)任編輯:haq

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

    關(guān)注

    183

    文章

    7634

    瀏覽量

    144127
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4925

    瀏覽量

    72434

原文標(biāo)題:C 語言,使用 union 了解內(nèi)存

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    RTThread支持內(nèi)存保護(hù)功能嗎?

    以前在其他視頻里看過說單片機(jī)可以實(shí)現(xiàn)線程崩潰不會影響系統(tǒng)運(yùn)行, 我一直不知道怎么實(shí)現(xiàn)的, 最近了解到 MPU和Zephyr的內(nèi)存保護(hù), 這些在RTthread中可以實(shí)現(xiàn)嗎
    發(fā)表于 10-14 07:14

    【HZ-RK3568開發(fā)板免費(fèi)體驗(yàn)】--開發(fā)板了解與初探

    感謝合眾恒躍與發(fā)燒友論壇提供的開發(fā)板與平臺,收到實(shí)物如下 下面來了解下開發(fā)板 開發(fā)板由底板和核心板組成,核心板基于瑞芯微RK3568J處理器設(shè)計,支持圖像H.264編解碼處理,內(nèi)置3D GPU可圖像
    發(fā)表于 06-28 23:42

    一文了解電壓諧波

    我們經(jīng)常會聽到諧波,到底什么是諧波,怎么定義的?為什么要關(guān)注諧波?什么時候關(guān)注諧波?諧波如何計算或標(biāo)準(zhǔn)規(guī)定的諧波的算法是怎樣的?GB關(guān)于電壓諧波又是如何評估的?帶著諸多的問題,我們一起來了解。
    的頭像 發(fā)表于 06-28 17:23 ?3366次閱讀
    一文<b class='flag-5'>了解</b>電壓諧波

    C語言中結(jié)構(gòu)體與聯(lián)合體的深度解析:內(nèi)存布局與應(yīng)用場景

    4字節(jié)對齊) 成員訪問:通過.運(yùn)算符獨(dú)立操作 生命周期:所有成員同時存在 1.2 聯(lián)合體(Union)的奧秘 聯(lián)合體通過內(nèi)存共享機(jī)制實(shí)現(xiàn)數(shù)據(jù)復(fù)用,其內(nèi)存大小由最大成員決定: union
    發(fā)表于 04-08 09:18

    hyper 內(nèi)存,Hyper內(nèi)存:如何監(jiān)控與優(yōu)化hyper-v虛擬機(jī)的內(nèi)存使用

    在日常工作中,我們常常需要處理大量的文件和數(shù)據(jù),這些重復(fù)性任務(wù)不僅耗時耗力,還容易因疲勞而導(dǎo)致錯誤。幸運(yùn)的是,批量管理工具的出現(xiàn)為這一問題提供了高效的解決方案。今天就為大家介紹Hyper內(nèi)存
    的頭像 發(fā)表于 01-24 14:15 ?1477次閱讀
    hyper <b class='flag-5'>內(nèi)存</b>,Hyper<b class='flag-5'>內(nèi)存</b>:如何監(jiān)控與優(yōu)化hyper-v虛擬機(jī)的<b class='flag-5'>內(nèi)存</b>使用

    虛擬內(nèi)存溢出該怎么處理 虛擬內(nèi)存在服務(wù)器中的應(yīng)用

    在現(xiàn)代計算機(jī)系統(tǒng)中,虛擬內(nèi)存是一種重要的資源管理技術(shù),它允許系統(tǒng)使用硬盤空間來擴(kuò)展物理內(nèi)存的容量。然而,當(dāng)系統(tǒng)運(yùn)行的程序和進(jìn)程超出了物理內(nèi)存和虛擬內(nèi)存的總?cè)萘繒r,就會出現(xiàn)虛擬
    的頭像 發(fā)表于 12-04 09:49 ?1294次閱讀

    什么是虛擬內(nèi)存分頁 Windows系統(tǒng)虛擬內(nèi)存優(yōu)化方法

    虛擬內(nèi)存分頁概述 在Windows操作系統(tǒng)中,虛擬內(nèi)存是通過分頁機(jī)制實(shí)現(xiàn)的。分頁允許系統(tǒng)將內(nèi)存中的數(shù)據(jù)移動到硬盤上,以便為當(dāng)前運(yùn)行的程序騰出空間。這個過程對于保持系統(tǒng)的流暢運(yùn)行至關(guān)重要,尤其是在物理
    的頭像 發(fā)表于 12-04 09:16 ?1988次閱讀

    虛擬內(nèi)存不足如何解決 虛擬內(nèi)存和物理內(nèi)存的區(qū)別

    虛擬內(nèi)存不足的解決方案 虛擬內(nèi)存不足是計算機(jī)用戶經(jīng)常遇到的問題,尤其是在運(yùn)行大型軟件或多任務(wù)處理時。以下是一些解決虛擬內(nèi)存不足問題的方法: 增加物理內(nèi)存(RAM) : 這是最直接的解決
    的頭像 發(fā)表于 12-04 09:14 ?2088次閱讀

    虛擬內(nèi)存的作用和原理 如何調(diào)整虛擬內(nèi)存設(shè)置

    虛擬內(nèi)存,也稱為虛擬內(nèi)存管理或頁面文件,是計算機(jī)操作系統(tǒng)中的一種內(nèi)存管理技術(shù)。它允許系統(tǒng)使用硬盤空間作為額外的RAM(隨機(jī)存取存儲器),以彌補(bǔ)物理內(nèi)存(RAM)的不足。虛擬
    的頭像 發(fā)表于 12-04 09:13 ?4531次閱讀

    DDR5內(nèi)存與DDR4內(nèi)存性能差異

    DDR5內(nèi)存與DDR4內(nèi)存性能差異 隨著技術(shù)的發(fā)展,內(nèi)存技術(shù)也在不斷進(jìn)步。DDR5內(nèi)存作為新一代的內(nèi)存技術(shù),相較于DDR4
    的頭像 發(fā)表于 11-29 14:58 ?3989次閱讀

    DDR內(nèi)存故障排查方法

    和服務(wù)器中。然而,由于各種原因,DDR內(nèi)存可能會出現(xiàn)故障,影響計算機(jī)的正常運(yùn)行。 DDR內(nèi)存故障的常見癥狀 在進(jìn)行故障排查之前,了解DDR內(nèi)存故障的常見癥狀是非常重要的。這些癥狀包括:
    的頭像 發(fā)表于 11-20 14:34 ?4060次閱讀

    DDR內(nèi)存的工作原理與結(jié)構(gòu)

    DDR內(nèi)存,全稱為Double Data Rate Synchronous Dynamic Random Access Memory(雙倍數(shù)據(jù)速率同步動態(tài)隨機(jī)存取內(nèi)存),是一種用于計算機(jī)和其他
    的頭像 發(fā)表于 11-20 14:32 ?3393次閱讀

    如何檢測DDR內(nèi)存性能

    檢測DDR內(nèi)存性能是一個涉及硬件和軟件的綜合過程,可以通過以下幾個步驟來進(jìn)行: 1. 硬件檢查 1.1 確認(rèn)內(nèi)存規(guī)格 查看內(nèi)存條標(biāo)簽 :檢查內(nèi)存條上的標(biāo)簽,確認(rèn)其規(guī)格,包括DDR類型(
    的頭像 發(fā)表于 11-20 14:30 ?4066次閱讀

    DDR內(nèi)存超頻技巧與注意事項(xiàng)

    青睞。 DDR內(nèi)存超頻技巧 了解內(nèi)存規(guī)格 在進(jìn)行超頻之前,首先需要了解自己內(nèi)存的規(guī)格,包括內(nèi)存
    的頭像 發(fā)表于 11-20 14:27 ?4758次閱讀

    Linux內(nèi)存泄露案例分析和內(nèi)存管理分享

    作者:京東科技 李遵舉 一、問題 近期我們運(yùn)維同事接到線上LB(負(fù)載均衡)服務(wù)內(nèi)存報警,運(yùn)維同事反饋說LB集群有部分機(jī)器的內(nèi)存使用率超過80%,有的甚至超過90%,而且內(nèi)存使用率還再不停的增長。接到
    的頭像 發(fā)表于 10-24 16:14 ?1253次閱讀
    Linux<b class='flag-5'>內(nèi)存</b>泄露案例分析和<b class='flag-5'>內(nèi)存</b>管理分享