女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用union來了解內存?

Linux愛好者 ? 來源:嵌入式Linux ? 作者:寫代碼的籃球球癡 ? 2021-06-22 17:01 ? 次閱讀

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

代碼如下:

#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上看到的不一定我們想看到的,所以我們需要去變量的內存地址一探究竟,一定要了解內存的布局,對內存有所了解。

上面注釋的代碼,在我的電腦中運行的結果不相同,所以要看printf的準確輸出,應該初始化變量a。

使用gdb來查看地址,可以準確看到變量內存中的數據。

什么是大小端?

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

大端模式(Big-endian),是指數據的高字節,保存在內存的低地址中,而數據的低字節,保存在內存的高地址中

小端模式(Little-endian),是指數據的高字節保存在內存的高地址中,而數據的低字節保存在內存的低地址中

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

#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]在高地址,這個沒有什么意見吧?

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

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

也可以通過查看內存地址來確認

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140473
  • 代碼
    +關注

    關注

    30

    文章

    4888

    瀏覽量

    70274

原文標題:C 語言,使用 union 了解內存

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    C語言中結構體與聯合體的深度解析:內存布局與應用場景

    4字節對齊) 成員訪問:通過.運算符獨立操作 生命周期:所有成員同時存在 1.2 聯合體(Union)的奧秘 聯合體通過內存共享機制實現數據復用,其內存大小由最大成員決定: union
    發表于 04-08 09:18

    虛擬內存不足如何解決 虛擬內存和物理內存的區別

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

    虛擬內存的作用和原理 如何調整虛擬內存設置

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

    DDR5內存與DDR4內存性能差異

    DDR5內存與DDR4內存性能差異 隨著技術的發展,內存技術也在不斷進步。DDR5內存作為新一代的內存技術,相較于DDR4
    的頭像 發表于 11-29 14:58 ?1945次閱讀

    DDR內存故障排查方法

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

    如何檢測DDR內存性能

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

    DDR內存超頻技巧與注意事項

    青睞。 DDR內存超頻技巧 了解內存規格 在進行超頻之前,首先需要了解自己內存的規格,包括內存
    的頭像 發表于 11-20 14:27 ?1879次閱讀

    Linux內存泄露案例分析和內存管理分享

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

    內存模組n/a怎么解決?

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

    邏輯內存和物理內存的區別

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

    如何使用反射內存交換機

    反射內存交換機是一種用于實現高速數據共享和通信的關鍵設備,以下是關于如何使用反射內存交換機的詳細介紹:一、前期準備?在開始使用反射內存交換機之前,需要進行以下準備工作:?1.了解系統需
    發表于 09-14 09:23 ?0次下載

    內存緩沖區和內存的關系

    內存緩沖區和內存之間的關系是計算機體系結構中一個至關重要的方面,它們共同協作以提高數據處理的效率和系統的整體性能。
    的頭像 發表于 09-10 14:38 ?1129次閱讀

    影響內存延遲的因素有哪些

    內存延遲是指等待對系統內存中存儲數據的訪問完成時引起的延期,它是衡量內存響應速度的重要指標。影響內存延遲的因素眾多,主要包括硬件因素和軟件因素兩大方面。
    的頭像 發表于 09-04 11:46 ?3215次閱讀

    內存時鐘是什么意思

    內存時鐘是內存模塊中一個至關重要的參數,它直接關聯到內存模塊能夠工作的最高頻率。以下是對內存時鐘的詳細解析,包括其定義、作用、與內存頻率的關
    的頭像 發表于 09-04 11:45 ?2135次閱讀

    內存的種類都有哪些?有什么區別?

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