欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言結(jié)構(gòu)體內(nèi)存對(duì)齊詳解

 更新時(shí)間:2022年01月12日 09:50:06   作者:小夏同學(xué)—沖啊!  
大家好,本篇文章主要講的是C語(yǔ)言結(jié)構(gòu)體內(nèi)存對(duì)齊詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下

1、結(jié)構(gòu)體內(nèi)存對(duì)齊是指當(dāng)我們創(chuàng)建一個(gè)結(jié)構(gòu)體變量時(shí),會(huì)向內(nèi)存申請(qǐng)所需的空間,用來存儲(chǔ)結(jié)構(gòu)體成員的內(nèi)容。我們可以將其理解為結(jié)構(gòu)體成員會(huì)按照特定的規(guī)則來存儲(chǔ)數(shù)據(jù)內(nèi)容。

2、結(jié)構(gòu)體的對(duì)齊規(guī)則

(1)第一個(gè)成員在相比于結(jié)構(gòu)體變量存儲(chǔ)起始位置偏移量為0的地址處。

(2)從第二個(gè)成員開始,在其自身對(duì)齊數(shù)的整數(shù)倍開始存儲(chǔ)(對(duì)齊數(shù)=編譯器默認(rèn)對(duì)齊數(shù)和成員字節(jié)大小的最小值,VS編譯器默認(rèn)對(duì)齊數(shù)為8)。

(3)結(jié)構(gòu)體變量所用總空間大小是成員中最大對(duì)齊數(shù)的整數(shù)倍。

(4)當(dāng)遇到嵌套結(jié)構(gòu)體的情況,嵌套結(jié)構(gòu)體對(duì)齊到其自身成員最大對(duì)齊數(shù)的整數(shù)倍,結(jié)構(gòu)體的大小為當(dāng)下成員最大對(duì)齊數(shù)的整數(shù)倍。

3、了解了結(jié)構(gòu)體的對(duì)齊規(guī)則后,我們通過實(shí)戰(zhàn)來鞏固(實(shí)例一至實(shí)例三同類,請(qǐng)細(xì)品實(shí)例四)

實(shí)例一:

分析:存儲(chǔ)結(jié)構(gòu)圖如下

紅色填充內(nèi)存為結(jié)構(gòu)體成員a,因其為char類型且是第一個(gè)成員,由規(guī)則(1)可得如下;橙色填充為結(jié)構(gòu)體成員b,因其為int類型且不是第一個(gè)成員,由規(guī)則(2)可得如下;綠色填充為結(jié)構(gòu)體成員c,因其為char類型且不是第一個(gè)成員,由規(guī)則(2)(3)可得如下;畫紅叉內(nèi)存位置屬于因?qū)R造成的浪費(fèi)內(nèi)存。

實(shí)例二:

 分析:存儲(chǔ)結(jié)構(gòu)如下

紅色填充內(nèi)存為結(jié)構(gòu)體成員a,因其為char類型且是第一個(gè)成員,由規(guī)則(1)可得如下;橙色填充為結(jié)構(gòu)體成員b,因其為char類型且不是第一個(gè)成員,由規(guī)則(2)可得如下;綠色填充為結(jié)構(gòu)體成員c,因其為int類型且不是第一個(gè)成員,由規(guī)則(2)(3)可得如下;畫紅叉內(nèi)存位置屬于因?qū)R造成的浪費(fèi)內(nèi)存。

實(shí)例三:

  分析:存儲(chǔ)結(jié)構(gòu)如下

紅色填充內(nèi)存為結(jié)構(gòu)體成員a,因其為double類型且是第一個(gè)成員,由規(guī)則(1)可得如下;橙色填充為結(jié)構(gòu)體成員b,因其為char類型且不是第一個(gè)成員,由規(guī)則(2)可得如下;綠色填充為結(jié)構(gòu)體成員c,因其為int類型且不是第一個(gè)成員,由規(guī)則(2)(3)可得如下;畫紅叉內(nèi)存位置屬于因?qū)R造成的浪費(fèi)內(nèi)存。

 實(shí)例四:

分析:存儲(chǔ)結(jié)構(gòu)圖如下

紅色填充內(nèi)存為結(jié)構(gòu)體成員a,因其為double類型且是第一個(gè)成員,由規(guī)則(1)可得如下;橙色填充為結(jié)構(gòu)體成員s3,因其為嵌套結(jié)構(gòu)體且不是第一個(gè)成員,大小為16,由規(guī)則(4)可得如下圖;綠色填充為結(jié)構(gòu)體成員c,因其為int類型且不是第一個(gè)成員,由規(guī)則(2)(3)可得如下;畫紅叉內(nèi)存位置屬于因?qū)R造成的浪費(fèi)內(nèi)存。

總結(jié)

到此這篇關(guān)于C語(yǔ)言結(jié)構(gòu)體內(nèi)存對(duì)齊詳解的文章就介紹到這了,更多相關(guān)C語(yǔ)言結(jié)構(gòu)體內(nèi)存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ float轉(zhuǎn)std::string 小數(shù)位數(shù)控制問題

    C++ float轉(zhuǎn)std::string 小數(shù)位數(shù)控制問題

    這篇文章主要介紹了C++ float轉(zhuǎn)std::string 小數(shù)位數(shù)控制問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++ 使用CRC32檢測(cè)內(nèi)存映像完整性的實(shí)現(xiàn)步驟

    C++ 使用CRC32檢測(cè)內(nèi)存映像完整性的實(shí)現(xiàn)步驟

    當(dāng)我們使用動(dòng)態(tài)補(bǔ)丁的時(shí)候,那么內(nèi)存中同樣不存在校驗(yàn)效果,也就無法抵御對(duì)方動(dòng)態(tài)修改機(jī)器碼了,為了防止解密者直接對(duì)內(nèi)存打補(bǔ)丁,我們需要在硬盤校驗(yàn)的基礎(chǔ)上,增加內(nèi)存校驗(yàn),防止動(dòng)態(tài)補(bǔ)丁的運(yùn)用。
    2021-06-06
  • 基于Matlab制作一個(gè)數(shù)獨(dú)求解器

    基于Matlab制作一個(gè)數(shù)獨(dú)求解器

    這篇文章主要為大家詳細(xì)介紹了如何利用Matlab制作一個(gè)數(shù)獨(dú)求解器,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Matlab有一定幫助,需要的可以參考一下
    2022-05-05
  • 詳解C/C++高精度(加減乘除)算法中的壓位優(yōu)化

    詳解C/C++高精度(加減乘除)算法中的壓位優(yōu)化

    在高精度計(jì)算中數(shù)組的每個(gè)元素存儲(chǔ)一位10進(jìn)制的數(shù)字,這樣的存儲(chǔ)方式并不是最優(yōu)的,32位的整型其實(shí)至少可以存儲(chǔ)9位高精度數(shù)字,數(shù)組元素存儲(chǔ)更多的位數(shù)就是壓位優(yōu)化。本文將展示壓位優(yōu)化的原理以及壓9位的實(shí)現(xiàn)和性能對(duì)比,需要的可以參考一下
    2023-01-01
  • C++深入探究二階構(gòu)造模式的原理與使用

    C++深入探究二階構(gòu)造模式的原理與使用

    C++中經(jīng)常會(huì)因?yàn)檎{(diào)用系統(tǒng)資源失敗導(dǎo)致出現(xiàn)BUG,所以在類調(diào)用構(gòu)造函數(shù)需要分配系統(tǒng)資源時(shí)會(huì)出現(xiàn)BUG,從而導(dǎo)致類對(duì)象雖然被創(chuàng)建,但是只是個(gè)半成品,為了避免這種情況需要使用二階構(gòu)造模式
    2022-04-04
  • 詳解C語(yǔ)言之緩沖區(qū)溢出

    詳解C語(yǔ)言之緩沖區(qū)溢出

    緩沖區(qū)是一塊連續(xù)的計(jì)算機(jī)內(nèi)存區(qū)域,可保存相同數(shù)據(jù)類型的多個(gè)實(shí)例。緩沖區(qū)可以是堆棧、堆和靜態(tài)數(shù)據(jù)區(qū)。在C/C++語(yǔ)言中,通常使用字符數(shù)組和malloc/new實(shí)現(xiàn)緩沖區(qū)。溢出指數(shù)據(jù)被添加到分配給該緩沖區(qū)的內(nèi)存塊之外。緩沖區(qū)溢出是最常見的程序缺陷
    2021-06-06
  • C++ std:map的使用方法

    C++ std:map的使用方法

    std::map是C++標(biāo)準(zhǔn)庫(kù)中一個(gè)強(qiáng)大而高效的關(guān)聯(lián)容器,本文就來介紹一下C++ std:map的使用方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • C++調(diào)試記錄與心得分享

    C++調(diào)試記錄與心得分享

    本文給大家詳細(xì)記錄了一次C++的調(diào)試過程,以及調(diào)試的心得,非常的實(shí)用,有需要的小伙伴可以參考下
    2017-07-07
  • C語(yǔ)言關(guān)于自定義數(shù)據(jù)類型之枚舉和聯(lián)合體詳解

    C語(yǔ)言關(guān)于自定義數(shù)據(jù)類型之枚舉和聯(lián)合體詳解

    枚舉顧名思義就是把所有的可能性列舉出來,像一個(gè)星期分為七天我們就可以使用枚舉,聯(lián)合體是由關(guān)鍵字union和標(biāo)簽定義的,和枚舉是一樣的定義方式,不一樣的是,一個(gè)聯(lián)合體只有一塊內(nèi)存空間,什么意思呢,就相當(dāng)于只開辟最大的變量的內(nèi)存,其他的變量都在那個(gè)變量占據(jù)空間
    2021-11-11
  • 通過c++11改進(jìn)我們的模式之改進(jìn)命令模式

    通過c++11改進(jìn)我們的模式之改進(jìn)命令模式

    這篇我要講的是如何使用c++11改進(jìn)命令模式,感興趣的朋友可以看下
    2013-11-11

最新評(píng)論