freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c內(nèi)存管理詳解(文件)

 

【正文】 }     示例6 用malloc/free和new/delete如何實(shí)現(xiàn)對(duì)象的動(dòng)態(tài)內(nèi)存管理  所以我們不要企圖用malloc/free來(lái)完成動(dòng)態(tài)對(duì)象的內(nèi)存管理,應(yīng)該用new/delete。如果用delete釋放“malloc申請(qǐng)的動(dòng)態(tài)內(nèi)存”,理論上講程序不會(huì)出錯(cuò),但是該程序的可讀性很差。(1)判斷指針是否為NULL,如果是則馬上用return語(yǔ)句終止本函數(shù)。(2)判斷指針是否為NULL,如果是則馬上用exit(1)終止整個(gè)程序的運(yùn)行?! …} 詳細(xì)內(nèi)容請(qǐng)參考C++使用手冊(cè)。如果發(fā)生“內(nèi)存耗盡”這樣的事情,一般說(shuō)來(lái)應(yīng)用程序已經(jīng)無(wú)藥可救。對(duì)于32位以上的應(yīng)用程序而言,無(wú)論怎樣使用malloc與new,幾乎不可能導(dǎo)致“內(nèi)存耗盡”。我只聽(tīng)到硬盤(pán)嘎吱嘎吱地響,Window 98已經(jīng)累得對(duì)鍵盤(pán)、鼠標(biāo)毫無(wú)反應(yīng)。void main(void){ float *p = NULL?!}  示例7試圖耗盡操作系統(tǒng)的內(nèi)存   用malloc申請(qǐng)一塊長(zhǎng)度為length的整數(shù)類型的內(nèi)存,程序如下:  * malloc返回值的類型是void *,所以在調(diào)用malloc時(shí)要顯式地進(jìn)行類型轉(zhuǎn)換,將void * 轉(zhuǎn)換成所需要的指針類型。最好用以下程序作一次測(cè)試:cout sizeof(long) endl。cout sizeof(void *) endl。void free( void * memblock )。如果p不是NULL指針,那么free對(duì)p連續(xù)操作兩次就會(huì)導(dǎo)致程序運(yùn)行錯(cuò)誤。 例如 Obj *b = new Obj(1)?! ∪绻胣ew創(chuàng)建對(duì)象數(shù)組,那么只能使用對(duì)象的無(wú)參數(shù)構(gòu)造函數(shù)。例如delete []objects。我最初學(xué)習(xí)C語(yǔ)言時(shí)特別怕指針,導(dǎo)致我開(kāi)發(fā)第一個(gè)應(yīng)用軟件(約1萬(wàn)行C代碼)時(shí)沒(méi)有使用一個(gè)指針,全用數(shù)組來(lái)頂替指針,實(shí)在蠢笨得過(guò)分。(2)必須養(yǎng)成“使用調(diào)試器逐步跟蹤程序”的習(xí)慣,只有這樣才能發(fā)現(xiàn)問(wèn)題的本質(zhì)?! ∥业慕?jīng)驗(yàn)教訓(xùn)是:(1)越是怕指針,就越要使用指針。 // 錯(cuò)誤的用法   后者相當(dāng)于delete objects[0],漏掉了另外99個(gè)對(duì)象。 // 創(chuàng)建100個(gè)動(dòng)態(tài)對(duì)象  不能寫(xiě)成Obj *objects = new Obj[100](1)。 delete b。 // 無(wú)參數(shù)的構(gòu)造函數(shù)  Obj(int x)。對(duì)于非內(nèi)部數(shù)據(jù)類型的對(duì)象而言,new在創(chuàng)建動(dòng)態(tài)對(duì)象的同時(shí)完成了初始化工作。int *p1 = (int *)malloc(sizeof(int) * length)?! 槭裁磃ree 函數(shù)不象malloc函數(shù)那樣復(fù)雜呢?這是因?yàn)橹羔榩的類型以及它所指的內(nèi)存的容量事先都是知道的,語(yǔ)句free(p)能正確地釋放內(nèi)存?! ≡趍alloc的“()”中使用sizeof運(yùn)算符是良好的風(fēng)格,但要當(dāng)心有時(shí)我們會(huì)昏了頭,寫(xiě)出 p = malloc(sizeof(p))這樣的程序來(lái)。cout sizeof(float) endl。cout sizeof(int) endl。我們通常記不住int, float等數(shù)據(jù)類型的變量的確切字節(jié)數(shù)。 void * malloc(size_t size)?! out “eat memory” endl。這下可把Unix和Windows程序員們樂(lè)壞了:反正錯(cuò)誤處理程序不起作用,我就不寫(xiě)了,省了很多麻煩。這個(gè)程序會(huì)無(wú)休止地運(yùn)行下去,根本不會(huì)終止。道理如同:如果不把歹徒擊斃,歹徒在老死之前會(huì)犯下更多的罪。如果一個(gè)函數(shù)內(nèi)有多處需要申請(qǐng)動(dòng)態(tài)內(nèi)存,那么方式(1)就顯得力不從心(釋放內(nèi)存很麻煩),應(yīng)該用方式(2)來(lái)處理。(3)為new和malloc設(shè)置異常處理函數(shù)?!f(a == NULL) {  cout “Memory Exhausted” endl。 if(a == NULL) {  return。 內(nèi)存耗盡怎么辦?如果在申請(qǐng)動(dòng)態(tài)內(nèi)存時(shí)找不到足夠大的內(nèi)存塊,malloc和new將返回NULL指針,宣告內(nèi)存申請(qǐng)失敗?! 〖热籲ew/delete的功能完全覆蓋了malloc/free,為什么C++不把malloc/free淘汰出局呢?這是因?yàn)镃++程序經(jīng)常要調(diào)用C函數(shù),而C程序只能用malloc/free管理動(dòng)態(tài)內(nèi)存。函數(shù)UseMallocFree中,由于 malloc/free不能執(zhí)行構(gòu)造函數(shù)與析構(gòu)函數(shù),必須調(diào)用成員函數(shù)Initialize和Destroy來(lái)完成初始化與清除工作。 // 釋放內(nèi)存}void UseNewDelete(void){ Obj *a = new Obj。void UseMallocFree(v
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1