吴忠躺衫网络科技有限公司

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)存有所了解。

上面注釋的代碼,在我的電腦中運行的結(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]在低地址,那這個計算機就是小端模式。

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

責(zé)任編輯:haq

聲明:本文內(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

    文章

    7614

    瀏覽量

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

    關(guān)注

    30

    文章

    4827

    瀏覽量

    69054

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

    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 ?769次閱讀

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

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

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

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

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

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

    內(nèi)存模組n/a怎么解決?

    一、內(nèi)存模組n/a問題概述 1.1 內(nèi)存模組的定義 內(nèi)存模組,又稱為RAM(Random Access Memory),是計算機系統(tǒng)中用于存儲數(shù)據(jù)的硬件設(shè)備。它允許處理器快速訪問和處理數(shù)據(jù),從而
    的頭像 發(fā)表于 10-14 10:44 ?915次閱讀

    邏輯內(nèi)存和物理內(nèi)存的區(qū)別

    邏輯內(nèi)存和物理內(nèi)存是計算機系統(tǒng)中兩個重要的概念,它們在計算機的運行和數(shù)據(jù)處理中起著至關(guān)重要的作用。 1. 物理內(nèi)存(Physical Memory) 物理內(nèi)存,也稱為RAM(Rando
    的頭像 發(fā)表于 09-27 15:38 ?934次閱讀

    如何使用反射內(nèi)存交換機

    反射內(nèi)存交換機是一種用于實現(xiàn)高速數(shù)據(jù)共享和通信的關(guān)鍵設(shè)備,以下是關(guān)于如何使用反射內(nèi)存交換機的詳細(xì)介紹:一、前期準(zhǔn)備?在開始使用反射內(nèi)存交換機之前,需要進(jìn)行以下準(zhǔn)備工作:?1.了解系統(tǒng)需
    發(fā)表于 09-14 09:23 ?0次下載

    影響內(nèi)存延遲的因素有哪些

    內(nèi)存延遲是指等待對系統(tǒng)內(nèi)存中存儲數(shù)據(jù)的訪問完成時引起的延期,它是衡量內(nèi)存響應(yīng)速度的重要指標(biāo)。影響內(nèi)存延遲的因素眾多,主要包括硬件因素和軟件因素兩大方面。
    的頭像 發(fā)表于 09-04 11:46 ?1911次閱讀

    內(nèi)存時鐘是什么意思

    內(nèi)存時鐘是內(nèi)存模塊中一個至關(guān)重要的參數(shù),它直接關(guān)聯(lián)到內(nèi)存模塊能夠工作的最高頻率。以下是對內(nèi)存時鐘的詳細(xì)解析,包括其定義、作用、與內(nèi)存頻率的關(guān)
    的頭像 發(fā)表于 09-04 11:45 ?1470次閱讀

    內(nèi)存的種類都有哪些?有什么區(qū)別?

    內(nèi)存,作為計算機中不可或缺的組成部分,承擔(dān)著存儲和交換數(shù)據(jù)的重要任務(wù)。隨著技術(shù)的不斷發(fā)展,內(nèi)存的種類也日益豐富,每種類型都有其獨特的特點和適用場景。以下是對內(nèi)存種類及其區(qū)別的詳細(xì)解析,旨在通過清晰的分類和深入的解析,幫助讀者全面
    的頭像 發(fā)表于 07-15 18:15 ?1.2w次閱讀

    聯(lián)想小新Pro 2024 AI銳龍版支持7500MHz內(nèi)存與核顯性能提升

    近日,聯(lián)想旗下的小新 Pro 2024 AI 銳龍版迎來了新的 OTA 升級,并支持高達(dá) 7500MHz 的內(nèi)存頻率(實測為 7467 MT/s)。
    的頭像 發(fā)表于 04-30 15:17 ?1352次閱讀

    C語言內(nèi)存泄漏問題原理

    內(nèi)存泄漏問題只有在使用堆內(nèi)存的時候才會出現(xiàn),棧內(nèi)存不存在內(nèi)存泄漏問題,因為棧內(nèi)存會自動分配和釋放。C語言代碼中堆
    發(fā)表于 03-19 11:38 ?574次閱讀
    C語言<b class='flag-5'>內(nèi)存</b>泄漏問題原理

    美光發(fā)布DDR5-6000超頻內(nèi)存,支持Intel XMP 3.0

    值得注意的是,盡管英睿達(dá)早前已終止電競超頻內(nèi)存產(chǎn)品線鉑勝 Ballistix,卻迅速帶來了具備散熱馬甲的 Pro 內(nèi)存系列,然而此間 Pro 內(nèi)存產(chǎn)品主要追求即插即用特性,并不涉及超頻
    的頭像 發(fā)表于 02-21 16:06 ?1120次閱讀
    百家乐论坛代理合作| 百家乐群1188999| 功夫百家乐的玩法技巧和规则 | 纳雍县| 大发888娱乐城真钱游戏| 做生意摆放什么会招财| 大发888游乐城| 百家乐官网稳赚打法| 顶尖百家乐官网的玩法技巧和规则 | 澳门百家乐官网实战| 百家乐路纸发表区| 大发888赌场官方下载| 海立方百家乐官网海立方| 百家乐好多假网站| 大发888娱乐城出纳| 百家乐官网注册送彩金平台| 百家乐下注稳赢法| 大发888真人真钱| 玩百家乐官网新太阳城| 百家乐专打单跳投注法| 大发888下载安装包| 百家乐官网与龙虎斗怎么玩| 百家乐赌博代理荐| 茶陵县| 百家乐大眼仔用法| 亚洲顶级赌场手机版| 如何胜百家乐官网的玩法技巧和规则 | 大发888手机版官网| 百家乐官网路子| 利都百家乐国际娱乐平台| 黄山市| 百家乐神算子| 牌9娱乐| 百樂坊百家乐官网的玩法技巧和规则| 大发888娱乐城网站| 线上百家乐官网赌法| 百家乐都是什么人玩的| 百家乐官网开户优惠多的平台是哪家| 乐天堂百家乐娱乐场| 百家乐官网招商用语| 澳门百家乐网上赌博|