東南大學(xué)系信息工程學(xué)院《程序設(shè)計原理》_第1頁
東南大學(xué)系信息工程學(xué)院《程序設(shè)計原理》_第2頁
東南大學(xué)系信息工程學(xué)院《程序設(shè)計原理》_第3頁
東南大學(xué)系信息工程學(xué)院《程序設(shè)計原理》_第4頁
東南大學(xué)系信息工程學(xué)院《程序設(shè)計原理》_第5頁
已閱讀5頁,還剩96頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第四章數(shù)據(jù)類型(補充)程序設(shè)計語言原理東南大學(xué)計算機科學(xué)與工程系1數(shù)據(jù)類型的設(shè)計、實現(xiàn)與語義數(shù)據(jù)類型概念的早期發(fā)展簡史數(shù)據(jù)類型強類型(strongtyping)Ada的數(shù)據(jù)類型分類體系A(chǔ)da語言的枚舉類型Ada的數(shù)值類型Ada的帶符號整數(shù)類型2數(shù)據(jù)類型的設(shè)計、實現(xiàn)與語義Ada的實數(shù)類型Ada的浮點數(shù)類型Ada的定點類型Ada的數(shù)值類型總結(jié)Ada的數(shù)組類型指針類型Ada的記錄類型34.1數(shù)據(jù)類型概念的早期發(fā)展簡史簡單說來,數(shù)據(jù)類型就是數(shù)據(jù)對象的分類及該分類上的操作。44.1.1基本指令系統(tǒng)中的類型因素指令系統(tǒng):數(shù)據(jù)傳送指令

INAL,PORT(字節(jié))

INAX,PORT(字)

算術(shù)運算

MUL無符號數(shù)乘法指令

IMUL有符號數(shù)乘法指令

54.1.1基本指令系統(tǒng)中的類型因素符號擴(kuò)展指令

CBW(convertbytetoword)CWD(convertwordtodoubleword)

邏輯運算

ANDORNOTXOR64.1.1基本指令系統(tǒng)中的類型因素

字符串處理

MOVS(movestring)CMPS(comparestring)

控制轉(zhuǎn)移

JMPSHORTOPR

JMPWORDPTROPR74.1.1基本指令系統(tǒng)中的類型因素數(shù)據(jù)類型:字節(jié)、字、雙字、無符號整數(shù)、有符號整數(shù)、布爾值(值或向量)、字符、字符串評注:抽象程度低,以原子類型為主,分類不嚴(yán)格(缺乏原則、主要基于硬件功能和應(yīng)用需要)、轉(zhuǎn)換自由(基本在使用者的主觀中,缺乏明顯的轉(zhuǎn)換標(biāo)志)84.1.2匯編語言中的類型數(shù)據(jù)定義偽指令DB、DW、DDDATA_BYTEDB10,4,10HDATA_WORDDW100,100H,-5DATA_DWDD3*20,0FFFDHMESSAGEDB‘HELLO’

ARRAYDB100DUP(?)94.1.2匯編語言中的類型結(jié)構(gòu)定義偽指令(C語言)personstrucfnamedb'Firstname'lnamedb'lastname'monthdw?daydw?yeardw?personends104.1.2匯編語言中的類型屬性(類型)修改操作符TYPEvariable返回類型 LENGTHvariable返回分配給該變量的單元數(shù)SIZEvariable返回分配給該變量的字節(jié)數(shù),SIZE=LENGTH*TYPEOFFSETvariable返回變量的偏移地址SEGvariable返回變量的段地址值114.1.2匯編語言中的類型類型指定操作符MOVAX,WORDPTROPER1+1124.1.2匯編語言中的類型評注:復(fù)合(聚集)類型能力有所提高,但其中的數(shù)組類型沒有明確化;開始支持用戶定義類型;地址概念是類型的核心概念,占有等量存儲空間的類型就兼容;類型轉(zhuǎn)換顯式化,但缺乏語義上的約束;出現(xiàn)屬性的雛形。134.1.3FORTRAN語言靜態(tài)、不支持用戶定義類型對數(shù)值類型支持也十分有限:整數(shù)、實數(shù)、雙精度、復(fù)數(shù)144.1.4C語言枚舉類型、用戶定義類型(數(shù)組、結(jié)構(gòu)),支持動態(tài)數(shù)據(jù)結(jié)構(gòu)(動態(tài)數(shù)組、聯(lián)合),不具備支持抽象數(shù)據(jù)類型的能力;靈活,但理論基礎(chǔ)不足,有些方面帶有明顯的匯編語言的痕跡(數(shù)組名同時表示數(shù)組第一個元素的地址,結(jié)構(gòu)標(biāo)志符本身不作為類型區(qū)分符使用);標(biāo)準(zhǔn)對類型之間的關(guān)系沒有詳細(xì)說明(boolean,numeration),轉(zhuǎn)換比較隨意(尤其在指針的問題上,

圖1);154.1.5Ada類型豐富、全面,支持用戶定義類型、抽象數(shù)據(jù)類型和面向?qū)ο蟾拍?,具備堅實的理論基礎(chǔ),概念一致、完整,同時提供以上語言中所具有的靈活性

Ada的類型定義機制164.1.5.1Ada的類型定義機制用戶定義類型:subtype用戶定義類型:newtype;exampleofsubtype:subtypeDay_Numberisintegerrange1..31;subtypeFeb_DayisDay_Numberrange1..28;174.1.5.1Ada的類型定義機制(續(xù))subtype類似與pascal的子界類型,僅對相應(yīng)type的值域加以限制,其它方面沒有改變,subtype和相應(yīng)type及同體系中其它subtypes之間進(jìn)行混合運算時無需顯式轉(zhuǎn)換,即從本質(zhì)上講,subtype沒有創(chuàng)造新的類型。Exampleofnewtypetypecolouris(Red,Amber,Green); typeLightisnewcolour;18typeApplesisnewInteger;typeOrangesisnewInteger;No_Of_Apples:Apples;No_Of_Oranges:Oranges;No_Of_Apples:=No_Of_Oranges;--wrongNo_Of_Apples:=Apples(No_Of_Oranges);--OKInteger(No_Of_Apples)+Integer(No_Of_Oranges);

--OK4.1.5.1Ada的類型定義機制(續(xù))19NewTypeVs.ParentTypeNewtype的作用

Newtype繼承parenttype的預(yù)定義操作,用戶定義的操作(primitivetype)(用戶定義的判等操作除外)

204.2數(shù)據(jù)類型簡單來倦講,數(shù)混據(jù)類型圈就是對抱數(shù)據(jù)對對象的分粗類,分蛙類方式臺主要是餅內(nèi)涵式暫(少數(shù)計是外延扭式)。內(nèi)涵是對存數(shù)據(jù)對象艷內(nèi)在性質(zhì)訂(靜態(tài)、繩動態(tài))的想描述。exte漸rnal渾dom使ain:問題域中響的數(shù)據(jù)類待型區(qū)分體原系;inte責(zé)rnal居dom予ain:編譯器清所能識目別的存駐在于程貸序中的黨數(shù)據(jù)類身型分類掩體系,級我們希副望該體春系能夠兵和exte陰rnal挑dom罷ain建立一一識對應(yīng)的關(guān)替系,同時架編譯器也墓能識別這步樣的關(guān)系逐,參見圖2、圖3。214.2.賊1數(shù)據(jù)沃類型概念間的組成(名字,恐結(jié)構(gòu),值周集,屬性絲式集,操作悠集)邏輯結(jié)構(gòu)卸與存儲表野示邏輯操作升與其實現(xiàn)用戶定徹義實現(xiàn)逝,系統(tǒng)棄實現(xiàn)224.3柴強右類型(stro托ngt衣ypin下g)強類型概然念發(fā)展:ST#1討(typ渡ed):必須為數(shù)鑰據(jù)對象聲授明類型。ST#2偵(typ叮ed):每個變肺量都必穗須與一樓類型相反聯(lián)系,頸而且,賀該變量萄只能存飼儲這一只類型的犬對象。ST#3碰(str暮ongl晝yty館ped)禍:ST#4澡(str化ongl暗yty儲ped)234.3.姜1強類型盾—ST#帥3所有的數(shù)脹據(jù)對象(萌變量,值宴,形參)溜均屬于特訊定的類型壟(一般是計有名的)叉。這些類題型可以是杰預(yù)定義的闊或用戶定曉義的。每踩個數(shù)據(jù)對吉象僅屬于央一種類型鮮。每個變量數(shù)僅能存儲數(shù)唯一類型幣的對象。一個類型虹可以有多漠個變體,哭該類型的褲數(shù)據(jù)對象母的變體內(nèi)福容可在運貫行時確定庭,程序在纏處理此類晨數(shù)據(jù)對象單時,必須炮對變體部其分予以確如認(rèn)。在子程序謝調(diào)用過程詠中,所有殺實參的類疫型必須與臨對應(yīng)形參自的類型相殃匹配。語母言必須對咐匹配原則積做出明確槳規(guī)定。24unio求nu_瞇tag{int殿ival竄;floa炭tfv遠(yuǎn)al;char找*sv餐al;}u;聯(lián)合25stru惜ct貸{char械*na碗me;int流flag鋪s;int榨ut盯ype跡;unio融n{int豬iv毛al;floa同tfv令al;char怒*sv欺al;}u末;}s氏ymt嚴(yán)ab[忠NSY興M];帶聯(lián)合的壘結(jié)構(gòu)264.3醋.2強類型蓋—ST#驗4滿足S較T#3該語言須億有系統(tǒng)、溫完整的類雹型體系,征對類型間驢的關(guān)系及內(nèi)各種語境述下使用類院型概念的渠規(guī)則做出原合理的規(guī)隨定。該類型棉體系及稼相關(guān)規(guī)悟則能夠條良好地別反映問私題域的圾邏輯結(jié)逝構(gòu)和相峽關(guān)的約達(dá)束。盡量在貝靜態(tài)情坐況下完狐整地確襲定程序莫中的類膨型信息嗽,檢查曉出違反驢類型體蘋系及相赤關(guān)規(guī)則喂的情況鏈,給出噴明確的援信息;益對在動查態(tài)情況腿下可能擺出現(xiàn)的冬類型錯館誤給予負(fù)充分的核考慮,就并予分教類,提兩供預(yù)定鋪義錯誤遵類型,口提供動濾態(tài)檢查古及異常刃處理設(shè)竿施。27強類型掩是一個相對的概念。有一種擦說法,泳認(rèn)為必片須在靜聲態(tài)條件差下檢測特出所有當(dāng)?shù)念愋网B錯誤才質(zhì)算是強鋪類型的態(tài)。這是捷一個歷飛史上的考看法。觀現(xiàn)在看然來,這惡樣的定糧義有失回簡單與玻片面。蛇現(xiàn)在的幫通用語缸言幾乎防都提供輕一些動棗態(tài)的數(shù)爭據(jù)類型摸。284.4乖A持da的數(shù)據(jù)類尤型分類體凈系elem反enta踩ryall廳ty希pescomp真osit傅eacce欠ssscal投ararra窮yrec男ord(pr磚ote此cte悶dtask卻)dis恩cre科teenum拜erat拳ioninte突gersig應(yīng)nedmod蓄ula者rflo是ati奧ngfixe汽ddec繞ima丑lord笛ina主ryrea菊l294.5壟Ada語言的光枚舉類辱型4.5怒.1鞋枚舉偵類型舉焦例4.5崖.2銳屬虧性與操趕作4.5.萬3布宏爾類型304.5.愚1枚什舉類型舉含例type尿Day翁i茄s(M償on,她Tue,輩Wed糟,Th撥u,F難ri,招Sat,陳Sun釀);typ靠eC超olo君r丟is襪(Wh頁ite丸,R遷ed,愉Ye胃llo奴w,慕Gre弟en,領(lǐng)Bl挺ue,歷Br補own魔,B奸lac廉k);type劃Hex悉a觸is(叼'A',鄙'B'心,'C緒','愚D(zhuǎn)',躲'E',稈'F'醋);314.5紙.2屬性與操全作1基伐于標(biāo)量類志型屬性的滔操作2陵第一個趕枚舉字朗面值的磨位置為繡0,其黑后為“怪1”,只…T’V悅al(牌T’P宮os(把X))周=XT’S豎ucc箱(X)雀=T’北Val東(T’閑Pos富(X)渡+1)3補關(guān)系操弦作324.5房誠.3桐布爾剪類型定義:typ澇eBoo羽lea朵nis(Fa蒜lse稍,Tr頁ue)裹;typ鴨eAns伯weris(Fal曉se,D粱on't稍_Kno蔥w,Tr刊ue);預(yù)定義廚操作枚舉類型的所有預(yù)然定義操作登,no箭t,穩(wěn)and繪,x活or334.6摟A牲da的數(shù)值類托型涉及數(shù)值浩類型的主誕要問題:對機器嚇實現(xiàn)的蠟依賴(會存儲,測界限,猴精度)344.7隆帶符號席整數(shù)類型4.7幟.1設(shè)計考放慮4.7.晨2例子4.7誘.3魯預(yù)定摸義操作354.7冒.1設(shè)計考雨慮設(shè)計數(shù)據(jù)鵝類型時的緒考慮:范圍、精型度(for份real殖typ激e),硬件提供仰的數(shù)據(jù)類形型,效率餐,可移植逆性.364.7事.2使例子typ炕eP徒age散_Nu束m夸is天ran飲ge精1.加.2訓(xùn)_00局0;subt刪ype友Smal躬l_In竭t篇isI刪nteg西er跪ran燦ge-叼10.擾.10腐;subt播ype影Buff舅er_S拼ize饒isI牲nteg碼er勞ran溫ge0猶..月Max;374.8Ada的實數(shù)類踐型浮點類型喇和定點類搜型混合運旋算384.9凈浮點寄類型typ三eC揭oef棍fic盤ien怪ti菊sd勢igi除ts篩10撓ran蠻ge牲-1.頭0.展.1裂.0;type胸Rea煩lis御dig箏its息8;typ艇eM喚ass坦is見di徹git杠s7帝ra紛nge從0.溫0.約.1噸.0E短35;sub躍typ刃eP宋rob摟abi瘡lit終yi諸sR遲eal歸ra逐nge貪0.夏0.初.1紐奉.0;--a茫subt瘡ype睬with順as伐mall慢err炊ange394.1惑0定三點類型type餅Vol燃tis紙del饅ta0毒.125翠ran銳ge0直.0.于.25圖5.0;type星Fra商ctio遵nis編del辨taS潤yste乳m.Fi紙ne_D昌elta華ran電ge-厲1.0級..1遙.0;Fra絞cti勇on'降Las程t=攤1.伴0-郊Sy剩ste歸m.F墻ine蓄_De書ltatype臣Mon串eyi搶sde唯lta華0.01靜dig蛇its逃15;dec助ima斷l(xiāng)f同ixe核dp她oin勺t404.11促Ada葵的數(shù)值類鎮(zhèn)型總結(jié)基本定戰(zhàn)義(范詳圍、精綿度、表圾示方法妖),類攪型轉(zhuǎn)換淺機制Num燦eri件cT濾ype跑Co篇nve系rsi暫on如果整嘴數(shù)之間桶的轉(zhuǎn)換昌,只動需轉(zhuǎn)換灰類型標(biāo)巡壽記(要賢檢查約薯束)。實數(shù)之矮間的類嘗型轉(zhuǎn)換嬌的原則聲是保證殺精度。實數(shù)向整殼數(shù)轉(zhuǎn)換的張過程主要叢是取整的屆過程。414.12束數(shù)組類朗型數(shù)組元謝素:具有蠻相同的類兵型數(shù)組索引:任邪意離散送類型424.12損.1例蓋子大多數(shù)友語言中渴,數(shù)組很下標(biāo)局皂限于整腰數(shù)類型廢,這種隔局限缺桐乏理論將上的依哭據(jù)。A基da語餡言中,爪數(shù)組的辰下標(biāo)可鴿以是任胸意離散倉類型。針我們通躺過一些默例子來攔看看這拆種約束宮的解除芝帶來的鹽便利。43Hou碌rs_揚Wor撒ked憑:arra聾y(Day癢)ofFlo結(jié)at;For節(jié)D昆in產(chǎn)Wor分kda數(shù)yl在oopHou洪rs_找Wor您ked餃(D)鉗:=贏8.久0;End鋤lo株op;Hou沸rs_汪Wor差ked孤(Sa昌t)間:=悄0.0巷;Hour隙s_Wo漂rked拼(Sun愛):=爆0.0密;44Wor彩k_D勝ay:母co送nst徹ant儲ar忙ray珍(Da停y)紗of畢Boo熱lea房誠n:游=(屯Tru胡e,昨Tru昌e,蕩Tru順e,證Tru透e,鍵Tru悶e,F汪als盛e,袍Fal滅se)絹;Tomo憶rrow求:co磚nsta與nta描rray卸(Day普):=杏(Tu服e,W挨ed,咸Thu,四Fri駕,Sa嫁t,S貧un,患Mon)肉;45匿名類蠟型Exam蹄ples臥of閉obje起ctd埋ecla循rati坊ons窯with彎arr樣ayt養(yǎng)ype聰defi損niti支ons(量anon瘡ymou姨s):Gri秋d:烏ar姓ray冷(1蘿..芳80,錦1腥..懷100嘴)o御fB鏡ool她ean勁;Mix概:a竊rra債y(C災(zāi)olo返rr珍ang連eR蘆ed暖..宰Gre累en)頑of中Bo踢ole扇an;A,壁B:憐arr影ay(戲1.瞞.8搜0,祖1.燭.1慕00)炭of環(huán)Bo黎ole灶an;ash調(diào)orth鵝and鉛0fA:潤arr營ay(萄1.運.8竿0,彩1.君.1秧00)斜of謎Bo適ole泰an;B:a肢rray姓(1.披.80渡,1第..1揭00)丈ofB淋oole閉an;A:=B洋;捷--il除lega蜘lA,B怪:Gr次id;A:=B類;橫--le篩gal46可見正論常情況系下匿名農(nóng)類型的跪變量是獲無法和始程序中煩的其它盾變量發(fā)貿(mào)生聯(lián)系錯的,所膊以,在稍Ada歉語言中咸變量正沈常使用貨的前提脆是必須牢為它聲親明有名冬類型。Ano經(jīng)nym旺ous狗ty所pe拐and訂na難med取ty漲pe的診使用原誼則,該莊原則也厲適用于致其它類狗型的問疼題。匿名類型474.1話2.2寇動態(tài)驕數(shù)組動態(tài)數(shù)組幅:N:i蝕nteg煤er::聽=…;Inv雁ers層e輪:儀Mat給rix嚷(1避..灰N,立1避..倉N);--冶N夠nee倘dn繭ot臭be虎sta荒tic48補充說顛明C語言中Arra面y類型(面和函數(shù)尾類型)丟不能作朱為函數(shù)夜的返回革類型。494.12彩.3仍操作arr份ay作為整體婆參加操作Sli議ce栗&s孫lid蛇ingS:消Str概ing維(1內(nèi)..驕7)鉛:=掃“BA嫩RBA巴RB”S(4若..各7)拍:=敲S(坐1.膚.4生)50對mul描tid巴ime衰nsi時ona療la蕉rra射ys采用row-擺majo捧ror筍der。在與其粗它語言線(如Fort叛ran)混合編程降時,可以截采用適當(dāng)御的pra掙gma提示編譯雷器改用col真umn膛-ma榮jor刺or丹der白。4.1帝2.4縫實茫現(xiàn)51C#語迷言的數(shù)棉組類型釋:r妹ect夜ang姥ula聞ra嘆rra控ys,秧ja擱gge梢da中rra愈y.cla創(chuàng)ss稠Tes奪t

{摘s鍛tat掉ic學(xué)voi幫dM掀ain廚()膏{鳥in罵t[]柴a1主=蓄new川in菊t[]歪{1隆,2虜,3輸};填i角nt[愧,]抱a2形=n突ew梨int疤[,]塔{{掀1,儀2,府3},禍{4樣,5列,6礎(chǔ)}};歲int贏[,,蛋]a哥3=遲ne據(jù)wi慣nt[披10,叉20留,3懲0];int[時][]癢j2=名new守int櫻[3][幣];渾j2[貧0]=蝴new獲int仰[]{籃1,2領(lǐng),3}見;趴j2[1無]=車new差int[菌]{1越,2,通3,萬4,5妥,6}摔;篩j2[2糞]=弟new次int[娘]{1所,2,企3,燒4,5閣,6,筑7,制8,9弊};啞}

}524.1燭3指針類型4.1狐3.1指針概念倚、指針空葉掛與垃圾沈回收4.1簽3.2沃C語言玻的指針博類型4.13窗.3Ada的acc留ess川ty堡pe4.13通.4廚C#語野言的內(nèi)存孔管理機制534.1與3.1指針概念墳、指針空愈掛與垃圾再回收指針也是液一種變量季,其值是花另一個變威量的地址憑??諕飚?dāng)某個置對象已悉經(jīng)不存稀在,而欺到達(dá)它兔的路徑刺依然存妄在時,璃該路徑鎮(zhèn)即被掛釣空。(本質(zhì)上微是一個生搜命期的問湊題)544.1趟3.1指針概念臺、指針空株掛與垃圾買回收(2喜)垃圾回圓收當(dāng)?shù)竭_(dá)園某個對速象的所征有路徑糖均已消澆失,該擇對象即棉無法使坡用,該侵對象所骨占有的蠶空間應(yīng)贈該作為藥垃圾被路回收55指針空掛墓和垃圾回疏收是兩個穿相對的概列念。指針空掛苦和垃圾回辯收的后果巷是不同的藏。垃圾不篇及時回收譽僅僅是消廳耗系統(tǒng)資畜源而已,孩在資源耗晚盡之前不顛會造成軟井件運行的提錯誤,而知指針空掛翁會很快導(dǎo)舍致軟件運誘行錯誤。一般來哥說垃圾釋回收是送操作系題統(tǒng)的任懲務(wù),解慈決指針桃空掛是爺語言的圣任務(wù)。564.13良.2君C語言的門指針類脈型C語言本身岡沒有提供暑避免指針抵空掛的措鞠施,沒有械考慮垃圾付回收問題政。指針在姐C語言垂中使用捆非常廣加泛,部祥分原因俗是指針杯有時是貞表達(dá)計叨算的最囑佳方法抽,部分建原因是債指針通拾常比其愈它方法翼可以生環(huán)成更加煎高效、驕緊湊的詞代碼。57C語言肥中和指碑針使用本有關(guān)的撈編碼規(guī)腐范形式:1.樂條目2.膊告警級播別(沉err篩or/礎(chǔ)war晚nin腰g/i恰nfo托rma聯(lián)tio長nal枝)3.理麻由4.軍實例581不機要修改蹄指向未騎釋放內(nèi)椒存的指辯針告警級別饑:Warn才ing。理由:可能會榜引起內(nèi)合存泄漏犁。對于獅堆變量雹的使用病,我們個采用以浙下約定日:用于傷申請內(nèi)巴存的那棒些指針洞代表該讀內(nèi)存塊災(zāi),這些勸指針不遣可以被乓修改,皇最后這警一塊內(nèi)餡存必須提且只能檢通過這羨個指針疏釋放;邀那些由崇其它指稻針賦值句或取對葵象地址餓得到的遞指針被槽認(rèn)為是今中間變豆量式的訂指針,弓他們不求代表相峰應(yīng)的地旅址,我趁們也不勸用他們君釋放內(nèi)翻存。592總禁止使預(yù)用不代屈表內(nèi)存捉塊的指密針釋放傾內(nèi)存告警級別掠:Err梢or。理由:如果使輩用不代孫表內(nèi)存壁塊的指歇針釋放伶內(nèi)存可愁能引起子內(nèi)存的賭不完全潑釋放、資越界釋繭放、指墳針空掛直、重復(fù)膨釋放等小問題。3

從繼堆中申寬請的內(nèi)拜存應(yīng)該旱保存起鉛始地址告警級部別:Erro杠r。理由:如果不牲保存會搬引起內(nèi)蔑存丟失譜,因為唉我們無澇法釋放堆該內(nèi)存客。例如:現(xiàn)p役=n感ew妹X[n醉]+條2;一種改城進(jìn)方法質(zhì)是:q=悼ne責(zé)wX材[n]升;p=棉q+2;604

盡量淚不要重復(fù)端使用一個刊指針申請光內(nèi)存(雖勿然每次重狹復(fù)申請前將都進(jìn)行了括釋放。)告警級別伍:Info皆rmat著iona喊l(fā)。理由:為了使每仆塊堆空間血有明確的菌代表指針洞(cus挑todi脾alp州oint母er)我宅們建議一味般不要使商用一個指兇針重復(fù)申陪請內(nèi)存(璃建立鏈表汪過程除外肯)。5

堆變享量作用域剖結(jié)束時要礙釋放相應(yīng)念的內(nèi)存告警級別懇:War秋nin柏g。理由:如果堆斑變量作洪用域結(jié)王束時沒反有釋放構(gòu)相應(yīng)的諒內(nèi)存,挨可能引腿起內(nèi)存膠泄漏。616

禁徑止將在傳內(nèi)層申逼請的堆鉆變量地津址傳給由外層告警級耀別:Err炮or。理由:將在內(nèi)層畫申請的堆延變量地址援傳給外層補可能引起序指針空掛嚷。7m魂emc錫opy渴和me頓mmo揀ve中毒,源指元針和目袖標(biāo)指針撐的有效流類型(eff便ect鎮(zhèn)ive劣ty船pe)要兼容牙。告警級瞧別:War夸nin周g。8

me窯mcop品y和me彈mmov噸e中最好毀整體操作(第三個耍參數(shù)的值拐等于源指荷針指向的吼對象的大敞小)告警級別亞:Inf銷orm捧ati縱ona次l。理由:向目的地俊址拷貝(培移動)時留,一般為姑整體操作博,如果只卸有拷貝(疤移動)一促部分,需退要在文檔槳中注明。629

禁佛止內(nèi)存女越界使址用告警級守別:Err鉗or。理由:內(nèi)存越界糞使用會引污起非法操絲式作異常,籮目前只能升檢測靜態(tài)閥可識別的目內(nèi)存越界姻。10偽禁止向行指針對坐象傳送桃大小超殲過其申零請范圍子的對象商(一般失來說是粉過大的鑰數(shù)組)告警級虜別:Erro篇r。6311

禁兇止將內(nèi)層過自動變量域的地址傳減給外層指絕針(包括蓬兩種情況醬,一種是羨以參數(shù)形餐式傳回,嘩另一種是雀通過re墳turn真語句傳出渠去)。告警級別煤:Erro好r。理由:會引起奔指針空扁掛,因程為內(nèi)層厲聲明的墊自動變據(jù)量在返扭回外層繭時自動沿釋放,汪這樣當(dāng)勒外層再完使用那遲個地址絹時就引撓起指針匙空掛。6412滴禁止將一給自動變量今的地址賦薪給一靜態(tài)勇變量告警級衣別:Erro撥r。理由:將一個自浪動變量的已地址賦值寄給一個靜款態(tài)變量容西易引起地激址空掛。譯因為當(dāng)函豈數(shù)返回時脊,靜態(tài)變標(biāo)量還會存鉛在,而自病動變量將擁消逝,這部樣靜態(tài)變獲量所指的扣變量已經(jīng)投釋放,從擋而引起指命針空掛。13飯禁止瘡向指針儲或數(shù)組供名賦負(fù)載整數(shù)告警級別峰:Erro黑r。理由:內(nèi)存不可盾能為負(fù)地配址。14吐禁止取數(shù)塔組的地址告警級別午:Erro抵r。理由:這種操叉作一般泊來說沒辱有意義堵。6515糟遠(yuǎn)、近指咳針相互轉(zhuǎn)強換告警級別朱:War崗nin鳥g。理由:可能會產(chǎn)丟失或周得到錯勁誤的地笨址信息蓮。16技取寄存器歐變量的地巾址告警級均別:Erro赤r。理由:寄存器不搜在內(nèi)存尋學(xué)址范圍內(nèi)饒。17解禁止沒有誓左值的取暖地址操作告警級別焰:Err肆or。理由:一元操作糊&必須有的一個左值跌放在賦值它號的左邊略用來存放柱地址。661不要婚修改指向歲未釋放內(nèi)燒存的指針2誕禁止使頑用不代厘表內(nèi)存承塊的指返針釋放喜內(nèi)存3

從袋堆中申誘請的內(nèi)身存應(yīng)該公保存起腦始地址4

盡減量不要樸重復(fù)使熊用一個時指針申析請內(nèi)存鍵(雖然跟每次重遇復(fù)申請彩前都進(jìn)瓶行了釋凡放。)5

堆變靠量作用域擊結(jié)束時要早釋放相應(yīng)衫的內(nèi)存6

禁港止將在育內(nèi)層申秘請的堆榨變量地澡址傳給艷外層7m侍emco損py和m捷emmo信ve中,碼源指針和翅目標(biāo)指針涼的有效類顯型(eff混ect火ive翻ty爺pe)要兼辛容。8

m逝emco備py和m嗽emmo限ve中最筍好整體操補作(第三陳個參數(shù)的滑值等于源廊指針指向晶的對象的豎大小)9醉禁止禽內(nèi)存越蓋界使用10禁散止向指針哄對象傳送著大小超過蓬其申請范縫圍的對象愚(一般來譜說是過大阿的數(shù)組)11獵禁止將魂內(nèi)層自銜動變量惹的地址漫傳給外遍層指針12罷禁止團(tuán)將一自真動變量懇的地址并賦給一肆靜態(tài)變遞量13忽禁止向指再針或數(shù)組心名賦負(fù)整則數(shù)14悉禁止狼取數(shù)組竭的地址15諷遠(yuǎn)、近指委針相互轉(zhuǎn)劍換16崇取寄存器檔變量的地密址17叉禁止沒有剃左值的取罵地址操作674.13足.3Ada的acc傻ess御ty登pe684.1更3.3短.1設(shè)計目遵標(biāo)靈活性一致性694.13串.3.2Cate藍(lán)gori免eso記fac存cess某typ斑es1acce鞭sst心ypeacc費ess椒to溜su嚇bpr渠ogr頭amgene喘ralpoo章ls嘉pec滔ifi朵cacc夏ess伴to討ob培jec超tacc憤ess啄to污va村ria純bleacc幼ess訂to冶va憑ria冒bleacce腳sst譜oco紡nsta谷nt704.1鍋3.3姓.3pool奇-spe娃cifi益cac驕cess然typ畢espool明-spe宿cifi雀cac特cess睬typ悟esa助nds倍tora行g(shù)ep僻ool例:typ謙eR電ef_寬Int燈_A顛is阿acc仆ess揚In辱teg緩er;type群Ref但_Int臂_Bi暴sac升cess顫Int杯eger浮;RA:帽Re晶f_I贊nt_率A:節(jié)=n灶ew嘩Int景ege濟(jì)r'(僚10)候;RB:撫Re尼f_I坊nt_廚B:住=n掙ew臣Int貸ege傻r'(雷20)網(wǎng);RA.a殖ll:翠=RB移.all抬;RA:純=RB背;近--i班l(xiāng)leg偏al71指向Pool且spe悟cifi東cob煌ject熟s的指針棚的釋放每一個p兆o(hù)ol理spec艇ific質(zhì)acc在ess代type勵對應(yīng)一個譜pool滴,該類型懸的acc墻ess停vari置able耍都在且僅熄在該po矛ol中申兄請空間。當(dāng)程序運景行超過了塔該類型的挑作用域時蓬,將該p丈ool中巡壽的所有o矩bjec資t同時釋仍放。72理論依癢據(jù)Pool典spe赤cifi依cac姓cess箏typ儀e也實行拒按名等價通,所以,彩要真正使劇用poo旗lsp伏ecif牲ica良cces趁sty宜pe必須靠首先聲明墓有名的類奔型說明。Acce禿ssv耐aria額ble的益聲明必須涼在相應(yīng)的換pool騾spe哥cifi食cac竊cess唯typ淺e的聲明義之后,也部就是說,澆這些ac椅cess逢var隙iabl軟e的作用旦域不可能脾超出相應(yīng)刷的poo海lsp語ecif畏ica斑cces倒sty由pe的作電用域。73當(dāng)程序宇運行超損出某p竟ool肥sp當(dāng)eci飛fic捉ac水ces問st引ype禿的作用漁域時,冬也必然舊超出了領(lǐng)該類型曬的ac喘ces壞sv唱ari洽abl奏e的作鳳用域,匠這時,波該po戴ol中沿的所有皮obj族ect漫s都不暖可用,新也沒有燒用了,泥當(dāng)然可遲以釋放元。當(dāng)程序立運行沒炕有超出迫該作用若域時,之不釋放增poo堵l中的外動態(tài)對永象,當(dāng)諒然也就夕不會出摩現(xiàn)對象燃釋放了不但是引臂用路徑呆(指針膽)沒有捐釋放的啟情況,歐即不會錄出現(xiàn)指厲針空掛羅現(xiàn)象。74該方式且沒有對暗每個動叛態(tài)ob曬jec蔥t進(jìn)行霸及時釋鐘放,會糖造成少本量的垃兵圾沒有俘及時回渴收的情闖況。但族是由于吐一般一卸個模塊城中申請另的動態(tài)診對象不共會太多燈,所以懷此法不排會造成毯嚴(yán)重問沈題。事舉實上,倦在軍方歪的嵌入瞞式系統(tǒng)眨中(一鵝般硬件拳資源都京比較緊盟張),難該方法叉沒有遇弊到明顯晃的資源狠浪費問檢題。754.13國.3.4gene庸ral竹acce爸sst國ypegene天ral踐acce蘭sst盟ypes閉,wh津ose鞏valu翅esc努and各esig降nate酒the姥ele槐ment叉sof野any璃sto勵rage惹poo正l,a斥swe雁lla腎sal很iase接dob傾ject堆scr統(tǒng)eate斬dby景dec暢lara吸tion塌sra澤ther津tha據(jù)nal獲loca改tors約,an陵dal升iase捉dsu陰bcom互pone輩nts勿ofo喉ther章obj戲ects俘(前提是愿必須在志該com哀pon立ent的說明前甘加ali房誠ase蕩d)764.1追3.3室.5acce耳ssib架ilit作yThe亭ba乓sic嘉ru躬le廟is家tha川tt問he周lif豆eti銜me濤of戰(zhàn)an綁acc左ess舞ed戚obj摘ect撇mu貨st箭be作at臥lea漿st狗as告lon況ga別st另hat拾of迷th竄ea亮cce攤ss丑obj時ect渴.各模塊暢之間的后調(diào)用關(guān)枝系形成叼了一個予動態(tài)的青層次嵌溜套關(guān)系明,同一今層的變借量具有少相同的理生命期爪。77這樣,我煌們對變量熱生命期的騰比較就轉(zhuǎn)長換為對變鳴量所在的胞模塊的當(dāng)荒次執(zhí)行所鉗在的層次鐮的比較。于是,牢我們要膊求被引帥用對象蛋所在的賺層次應(yīng)茄該處于寶引用對蟲象(指泊針)的縣外層或恭者同層壇?;趰忂@種意庫義,我塵們把模聚塊執(zhí)行美中的動很態(tài)層次享關(guān)系叫劉做引用律層次(武acc共ess倆le然vel茫).78Ada識語言要羊求在引懲用類型角變量(忠指針)藥賦值和蕉引用類粥型轉(zhuǎn)換稿的過程懶中檢查椒源操作腥數(shù)和目周標(biāo)操作召數(shù)的a位cce索ss隙lev蕩el。當(dāng)acc退ess劍type典作為形參丹時必須是裂匿名類型唇。Acce先ssl堵evel災(zāi)信息在引易用類型變鐵量賦值時剖的傳遞。為了實須現(xiàn)靜態(tài)安檢查,左將規(guī)則積改為:The疾ba崇sic摧ru雀le手is汽tha修tt榮he碗lif扯eti于me擋of嗎an迫acc曾ess黑ed制obj連ect提mu醋st疾be古at廣lea戲st算as僵lon鉛ga理st肚hat脖of偵th兩ea砌cce嘴ss描typ鏈e.79例1pro烤ced勺ure那Ma勻in遺isTyp穩(wěn)eA綿Ii爬sa胡cce衰ss授all哥In躲teg拼er;Ref1示:AI秒;begi為ndecl凱areRef2遙:AI作;I:a瓦lias特edI敬nteg綿er;beg因inRef言2:坡=I備'A職cce避ss;Ref1閥:=度Ref2做;end;…decl戒are--遺som圣eo喚the次rv相ari摧abl薯esbegi育nRef1皮.all卸:=悲0;end該;end輩main細(xì);80例2decl師aretype業(yè)AI互isa輝cces頂sal尺lIn膀tege豪r;I:陰ali阻ase蒸dI慢nte鐘ger書;RefI糧:AI沿:=把I'Ac成cess兆;beg遠(yuǎn)in…decl每aretyp唇eA雀Ji培sa議cce殖ss葉all盒In援teg傘er;J:a狐lias烤edI略nteg媽er;Ref描J:起AJ姥:=嶺J'A躺cce斤ss;beg專in…RefI示:=遭AI(R吳efJ)家;窄--照ille機gal…end慣;…end爬;814.1仙3.3民.6吸間接引懂用的對村象的消姐亡從以上分瘋析可以看規(guī)出,間接耽引用對象工的消亡(移其所占用孩空間的釋忘放)由系地統(tǒng)實現(xiàn),棍這樣大大旬減輕了程金序員的負(fù)推擔(dān),而且竿可以有效懷避免諸如想指針空掛賭及反復(fù)釋蜻放同一存盆儲空間等征問題。824.1祖3.3淘.7別自由指師針unc川kec向ked浩_de刪all踐oca冬tio復(fù)n834.1療3.3劣.8類型轉(zhuǎn)霞換的基樹本原則不同的Poo詠ls仙pec球ifi方ct耐ype之間不疫允許,gene客ral恒acce彈sst兵ype之間:委他們街所指對喉象之間博靜態(tài)mat脫ch;目標(biāo)類型日的lif瞇e_t檔ime必須nog跪reat斃ert己han源類型俱。Pool陵spe徑cifi晌cto籠gen漆eral托acc莫ess有type砌:ye銀s,v致ice,朵no.844.13赤.4C學(xué)#語言的扭內(nèi)存管理輛機制C#語臭言的值膜類型和呈引用類過型C#s映uppo密rts倍two隨kind財sof禮typ逃es:val訊ue婦typ葵esandref抄ere辭nce何ty較pes.V會alu踢et掉ype萍si茫ncl副ude郊si祖mpl瓶et隸ype鏡s(埋e.g泥.,cha蔽r,int,a鴉ndflo格at),追enu暑mt箏ype開s,昨and慘st任ruc騎tt愿ype域s.揉Ref估ere絞nce汽ty片pes弄in脾clu靈de架cla軌ss流typ退es,矩in軍ter智fac環(huán)et膀ype澆s,尸del扛ega腫te址typ隊es,捷an絹da鳳rra塞yt撫ype舌s.85值類型身的變量貸中直接姐存放該加變量的巾數(shù)據(jù),雅引用類惰型的變用量中存端放對其佩它對象諒的引用安。兩個推引用類卷型的變稍量可能三指向相種同的對午象,這識樣對一象個引用害變量的貿(mào)操作也葉就影響羅了另一腿個引用垃變量??迣τ谥当忸愋偷哪c變量來某講,每絲式一個變償量僅僅府代表它槳自己,翻對一個渴值變量友的操作諸不會影大響到其洞它的變輩量。86通俗地講徹,多個引麗用變量可畫能代表的閣是同一份板拷貝,而弟每個值變候量僅僅代芝表它自己匯的拷貝?;蛘哒f,震對于引用曠變量才存玩在別名問規(guī)題,而值貍變量并不紅存在別名銹問題。87usi耀ng洗Sys消tem捎;clas霧sCl柳ass1凝{隆publ處ici跟ntV松alue萍=0泄;

}clas頸sTe委st

{愁st絡(luò)atic美voi冷dMa義in()帥{瓣int芬val恰1=終0;驅(qū)int延val寒2=掛val1右;族val2僵=1刑23;Clas呈s1r池ef1滑=ne右wCl籌ass1送();澇Cl昨ass1濟(jì)ref欠2=晶ref1崗;掘ref2蚊.Val忠ue=陰

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論