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

正文內(nèi)容

【能力素質(zhì)】c內(nèi)存管理詳解(存儲(chǔ)版)

  

【正文】 = new Obj?! 〖热籲ew/delete的功能完全覆蓋了malloc/free,為什么C++不把malloc/free淘汰出局呢?這是因?yàn)镃++程序經(jīng)常要調(diào)用C函數(shù),而C程序只能用malloc/free管理動(dòng)態(tài)內(nèi)存?!f(a == NULL) {  cout “Memory Exhausted” endl。如果一個(gè)函數(shù)內(nèi)有多處需要申請(qǐng)動(dòng)態(tài)內(nèi)存,那么方式(1)就顯得力不從心(釋放內(nèi)存很麻煩),應(yīng)該用方式(2)來(lái)處理。這個(gè)程序會(huì)無(wú)休止地運(yùn)行下去,根本不會(huì)終止。  cout “eat memory” endl。 cout sizeof(int) endl?! ≡趍alloc的“()”中使用sizeof運(yùn)算符是良好的風(fēng)格,但要當(dāng)心有時(shí)我們會(huì)昏了頭,寫(xiě)出 p = malloc(sizeof(p))這樣的程序來(lái)。int *p1 = (int *)malloc(sizeof(int) * length)。 // 無(wú)參數(shù)的構(gòu)造函數(shù)  Obj(int x)。 // 創(chuàng)建100個(gè)動(dòng)態(tài)對(duì)象  不能寫(xiě)成Obj *objects = new Obj[100](1)?! ∥业慕?jīng)驗(yàn)教訓(xùn)是:(1)越是怕指針,就越要使用指針。我最初學(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ò)分?! ∪绻胣ew創(chuàng)建對(duì)象數(shù)組,那么只能使用對(duì)象的無(wú)參數(shù)構(gòu)造函數(shù)。例如如果p不是NULL指針,那么free對(duì)p連續(xù)操作兩次就會(huì)導(dǎo)致程序運(yùn)行錯(cuò)誤。cout sizeof(void *) endl。最好用以下程序作一次測(cè)試:  用malloc申請(qǐng)一塊長(zhǎng)度為length的整數(shù)類(lèi)型的內(nèi)存,程序如下:void main(void){ float *p = NULL。對(duì)于32位以上的應(yīng)用程序而言,無(wú)論怎樣使用malloc與new,幾乎不可能導(dǎo)致“內(nèi)存耗盡”。詳細(xì)內(nèi)容請(qǐng)參考C++使用手冊(cè)。(2)判斷指針是否為NULL,如果是則馬上用exit(1)終止整個(gè)程序的運(yùn)行?! ∷晕覀儾灰髨D用malloc/free來(lái)完成動(dòng)態(tài)對(duì)象的內(nèi)存管理,應(yīng)該用new/delete。 // 初始化 //… aDestroy()。有了malloc/free為什么還要new/delete?  malloc與free是C++/C語(yǔ)言的標(biāo)準(zhǔn)庫(kù)函數(shù),new/delete是C++的運(yùn)算符。 {  A a。char *p = NULL。杜絕“野指針” str = GetString2()?!tr = GetString()?!ree(str)。由于“指向指針的指針”這個(gè)概念不容易理解,我們可以用函數(shù)返回值來(lái)傳遞動(dòng)態(tài)內(nèi)存?!etMemory2(amp。如果函數(shù)體內(nèi)的程序修改了_p的內(nèi)容,就導(dǎo)致參數(shù)p的內(nèi)容作相應(yīng)的修改。 如果函數(shù)的參數(shù)是一個(gè)指針,不要指望用該指針去申請(qǐng)動(dòng)態(tài)內(nèi)存。cout sizeof(a) endl。示例733(a)中,sizeof(a)的值是12(注意別忘了’’)。strcpy(b, a)。示例732中,若想把數(shù)組a的內(nèi)容復(fù)制給數(shù)組b,不能用語(yǔ)句 b = a ,否則將產(chǎn)生編譯錯(cuò)誤。char a[] = “hello”。數(shù)組名對(duì)應(yīng)著(而不是指向)一塊內(nèi)存,其地址與容量在生命期內(nèi)保持不變,只有數(shù)組的內(nèi)容可以改變。防止使用指針值為NULL的內(nèi)存。終有一次程序突然死掉,系統(tǒng)出現(xiàn)提示:內(nèi)存耗盡。內(nèi)存的缺省初值究竟是什么并沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),盡管有些時(shí)候?yàn)榱阒?,我們寧可信其無(wú)不可信其有。有時(shí)用戶(hù)怒氣沖沖地把你找來(lái),程序卻沒(méi)有發(fā)生任何問(wèn)題,你一走,錯(cuò)誤又發(fā)作了。在執(zhí)行函數(shù)時(shí),函數(shù)內(nèi)局部變量的存儲(chǔ)單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時(shí)這些存儲(chǔ)單元自動(dòng)被釋放。本文的內(nèi)容比一般教科書(shū)的要深入得多,讀者需細(xì)心閱讀,做到真正地通曉?xún)?nèi)存管理。程序在運(yùn)行的時(shí)候用malloc或new申請(qǐng)任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時(shí)用free或delete釋放內(nèi)存。常用解決辦法是,在使用內(nèi)存之前檢查指針是否為NULL?! ±缭谑褂脭?shù)組時(shí)經(jīng)常發(fā)生下標(biāo)“多1”或者“少1”的操作?!  ∮腥N情況:  (1)程序中的對(duì)象調(diào)用關(guān)系過(guò)于復(fù)雜,實(shí)在難以搞清楚某個(gè)對(duì)象究竟是否已經(jīng)釋放了內(nèi)存,此時(shí)應(yīng)該重新設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu),從根本上解決對(duì)象管理的混亂局面。  【規(guī)則3】避免數(shù)組或指針的下標(biāo)越界,特別要當(dāng)心發(fā)生“多1”或者“少1”操作?! ∠旅嬉宰址疄槔容^指針與數(shù)組的特性。char *p = “world”?! ≌Z(yǔ)句p = a 并不能把a(bǔ)的內(nèi)容復(fù)制指針p,而是把a(bǔ)的地址賦給了p。char *p = (char *)mallo
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1