內(nèi)存對齊與自定義類型

一、內(nèi)存對齊

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的霍山網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

  (一)、為什么會有內(nèi)存對齊?

    1、為了提高程序的性能,數(shù)據(jù)結(jié)構(gòu)(尤其是棧)應(yīng)該盡可能的在自然邊界上對齊。原因是為了訪問未對齊的內(nèi)存,處理器需要進(jìn)行兩次訪問,而訪問對齊的內(nèi)存,只需要一次就夠了。這種方式稱作“以空間換時間”在很多對時間復(fù)雜度有要求問題中,會采用這種方法。

  內(nèi)存對齊與自定義類型

   由此我們可以明白位段的優(yōu)點,本來定義了5個成員,需要5個存儲單位,但是使用位段后只需要4個存儲空間就足夠了。

  3、優(yōu)點:

    但它的成員是一個或多個位的字段,這些不同長度的字段實際上是存儲于一個或多個×××變量中,他的優(yōu)點是能夠以較少的內(nèi)存單元存儲數(shù)據(jù)。位段可以用×××形式輸出。

例2:

     struct tagAAA

                {

                  unsigned int a : 1;

                  unsigned int  : 2;           //沒有聲明變量,但是卻指定位段大小,稱為占位。

                  unsigned int c : 6;

                  unsigned int d : 4;

                  unsigned int e;             //沒有指定位段大小,默認(rèn)為自身類型的大小

                 }AAA_S;                

             

(七)、聯(lián)合

  1、聯(lián)合的聲明:

          typedefunionA

           {

                inti;

                charc;

            }A;

  2、聯(lián)合的特點:

    聯(lián)合成員之間共用同一塊空間。聯(lián)合的大小等于成員中所占內(nèi)存最大變量大小??梢杂脕頊y大小端。

(八)、枚舉:

    1、聲明:

           typedefenumA

           {

                   zero,

                   one,

                    two

            }A;

如果沒有對枚舉成員進(jìn)行初始化時,則默認(rèn)枚舉成員從0開始依次遞增

 注意:

      1、在同一個程序中,不能不能聲明同名的枚舉類型

      2、在同一個程序中,不同的枚舉類型的枚舉成員不能同名。

      3、任何枚舉的大小都是4

  2、枚舉與#define 標(biāo)識符之間區(qū)別:

      1、#define 標(biāo)識符在預(yù)編譯期間進(jìn)行簡單替換。枚舉類型在編譯的時候確定其值。

      2、枚舉常量可以調(diào)試,#define 標(biāo)識符不可以。

      3、枚舉一次可以定義大量的枚舉量。

文章名稱:內(nèi)存對齊與自定義類型
轉(zhuǎn)載來源:http://muchs.cn/article14/pisdde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航微信小程序、用戶體驗、電子商務(wù)、做網(wǎng)站虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計