新聞中心
一、內(nèi)存對(duì)齊
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的霍山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
(一)、為什么會(huì)有內(nèi)存對(duì)齊?
1、為了提高程序的性能,數(shù)據(jù)結(jié)構(gòu)(尤其是棧)應(yīng)該盡可能的在自然邊界上對(duì)齊。原因是為了訪問(wèn)未對(duì)齊的內(nèi)存,處理器需要進(jìn)行兩次訪問(wèn),而訪問(wèn)對(duì)齊的內(nèi)存,只需要一次就夠了。這種方式稱作“以空間換時(shí)間”在很多對(duì)時(shí)間復(fù)雜度有要求問(wèn)題中,會(huì)采用這種方法。
由此我們可以明白位段的優(yōu)點(diǎn),本來(lái)定義了5個(gè)成員,需要5個(gè)存儲(chǔ)單位,但是使用位段后只需要4個(gè)存儲(chǔ)空間就足夠了。
3、優(yōu)點(diǎn):
但它的成員是一個(gè)或多個(gè)位的字段,這些不同長(zhǎng)度的字段實(shí)際上是存儲(chǔ)于一個(gè)或多個(gè)×××變量中,他的優(yōu)點(diǎn)是能夠以較少的內(nèi)存單元存儲(chǔ)數(shù)據(jù)。位段可以用×××形式輸出。
例2:
struct tagAAA
{
unsigned int a : 1;
unsigned int : 2; //沒(méi)有聲明變量,但是卻指定位段大小,稱為占位。
unsigned int c : 6;
unsigned int d : 4;
unsigned int e; //沒(méi)有指定位段大小,默認(rèn)為自身類型的大小
}AAA_S;
(七)、聯(lián)合
1、聯(lián)合的聲明:
typedefunionA
{
inti;
charc;
}A;
2、聯(lián)合的特點(diǎn):
聯(lián)合成員之間共用同一塊空間。聯(lián)合的大小等于成員中所占內(nèi)存最大變量大小??梢杂脕?lái)測(cè)大小端。
(八)、枚舉:
1、聲明:
typedefenumA
{
zero,
one,
two
}A;
如果沒(méi)有對(duì)枚舉成員進(jìn)行初始化時(shí),則默認(rèn)枚舉成員從0開始依次遞增
注意:
1、在同一個(gè)程序中,不能不能聲明同名的枚舉類型
2、在同一個(gè)程序中,不同的枚舉類型的枚舉成員不能同名。
3、任何枚舉的大小都是4
2、枚舉與#define 標(biāo)識(shí)符之間區(qū)別:
1、#define 標(biāo)識(shí)符在預(yù)編譯期間進(jìn)行簡(jiǎn)單替換。枚舉類型在編譯的時(shí)候確定其值。
2、枚舉常量可以調(diào)試,#define 標(biāo)識(shí)符不可以。
3、枚舉一次可以定義大量的枚舉量。
當(dāng)前題目:內(nèi)存對(duì)齊與自定義類型
網(wǎng)頁(yè)鏈接:http://fisionsoft.com.cn/article/pisdde.html