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

正文內(nèi)容

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

2025-09-22 16:03上一頁面

下一頁面
  

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