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

正文內(nèi)容

c內(nèi)存管理詳解(doc27)-經(jīng)營管理-資料下載頁

2025-08-07 15:58本頁面

【導(dǎo)讀】程序員們經(jīng)常編寫內(nèi)存管理程序,往往提心吊膽。如果不想觸雷,唯一的解。決辦法就是發(fā)現(xiàn)所有潛伏的地雷并且排除它們,躲是躲不了的。從靜態(tài)存儲區(qū)域分配。塊內(nèi)存在程序的整個運行期間都存在。例如全局變量,static變量。在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時這些存儲單元自動被釋放。置于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。從堆上分配,亦稱動態(tài)內(nèi)存分配。動態(tài)內(nèi)存的生存期由我們決定,使用非常靈活,但問題也最多。發(fā)生內(nèi)存錯誤是件非常麻煩的事情。而這些錯誤大多沒有明顯的癥狀,時隱時現(xiàn),增。加了改錯的難度。你一走,錯誤又發(fā)作了。編程新手常犯這種錯誤,因為他們沒有意識到內(nèi)存分配會不成功。解決辦法是,在使用內(nèi)存之前檢查指針是否為NULL。的缺省初值全為零,導(dǎo)致引用初值錯誤。省略,不要嫌麻煩。含有這種錯誤的函數(shù)每被調(diào)用一次就丟失一塊內(nèi)存。防止將未被初始化的內(nèi)。種錯覺,以為兩者是等價的。用運算符sizeof可以計算出數(shù)組的容量(字節(jié)數(shù))。

  

【正文】 RUE) { p = new float[1000000]。 cout “eat memory” endl。 if(p==NULL) exit(1)。 中國最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者所有 ) } } 示例 7 試圖耗盡操作系統(tǒng)的內(nèi)存 malloc/free 的使用要點 函數(shù) malloc 的原型如下: void * malloc(size_t size)。 用 malloc 申請一塊長度為 length 的整數(shù)類型的內(nèi)存,程序如下: int *p = (int *) malloc(sizeof(int) * length)。 我們應(yīng)當(dāng)把注意力集中在兩個要素上:“類型轉(zhuǎn)換”和“ sizeof” 。 中國最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者所有 ) * malloc 返回值的類型是 void *,所以在調(diào)用 malloc 時要顯式地進(jìn)行類型轉(zhuǎn)換,將 void * 轉(zhuǎn)換成所需要的指針類型。 * malloc 函數(shù)本身并不識別要申請的內(nèi)存是什么類型,它只關(guān)心內(nèi)存的總字節(jié)數(shù)。我們通常記不住 int, float 等數(shù)據(jù)類型的變量的確切字節(jié)數(shù)。例如 int 變量在 16 位系統(tǒng)下是 2 個字節(jié),在 32 位下是 4 個字節(jié);而 float變量在 16 位系統(tǒng)下是 4 個字節(jié),在 32 位下也是 4 個字節(jié)。最好用以下程序作一次測試: cout sizeof(char) endl。 cout sizeof(int) endl。 cout sizeof(unsigned int) endl。 cout sizeof(long) endl。 cout sizeof(unsigned long) endl。 cout sizeof(float) endl。 cout sizeof(double) endl。 cout sizeof(void *) endl。 中國最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者所有 ) 在 malloc 的“ ()” 中使用 sizeof 運算符是良好的風(fēng)格,但要 當(dāng)心有時我們會昏了頭,寫出 p = malloc(sizeof(p))這樣的程序來。 * 函數(shù) free 的原型如下: void free( void * memblock )。 為什么 free 函數(shù)不象 malloc函數(shù)那樣復(fù)雜呢?這是因為指針 p的類型以及它所指的內(nèi)存的容量事先都是知道的,語句 free(p)能正確地釋放內(nèi)存。如果 p 是 NULL 指針,那么 free 對 p 無論操作多少次都不會出問題。如果 p不是 NULL 指針,那么 free 對 p 連續(xù)操作兩次就會導(dǎo)致程序運行錯誤。 new/delete 的 使用要點 運算符 new 使用起來要比函數(shù) malloc 簡單得多,例如: int *p1 = (int *)malloc(sizeof(int) * length)。 int *p2 = new int[length]。 中國最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者所有 ) 這是因為 new 內(nèi)置了 sizeof、類型轉(zhuǎn)換和類型安全檢查功能。對于非內(nèi)部數(shù)據(jù)類型的對象而言, new 在創(chuàng)建動態(tài)對象的同時完成了初始化工作。如果對象有多個構(gòu)造函數(shù),那么 new 的語句也可以有多種形式。例如 class Obj { public : Obj(void)。 // 無參數(shù)的構(gòu)造函數(shù) Obj(int x)。 // 帶一個參數(shù)的構(gòu)造函數(shù) ? } void Test(void) { Obj *a = new Obj。 Obj *b = new Obj(1)。 // 初值為 1 ? delete a。 delete b。 } 中國最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者所有 ) 如果用 new 創(chuàng)建對象數(shù)組,那么只能使用對象的無參數(shù)構(gòu)造函數(shù)。例如 Obj *objects = new Obj[100]。 // 創(chuàng)建 100 個動態(tài)對象 不能寫成 Obj *objects = new Obj[100](1)。// 創(chuàng)建 100 個動態(tài)對象的同時賦初值 1 在用 delete 釋放對象數(shù)組時,留意不要丟了符號‘ []’ 。例如 delete []objects。 // 正確的用法 delete objects。 // 錯誤的用法 后者相當(dāng)于 delete objects[0],漏掉了另外 99 個對象。 一些心得體會 我認(rèn)識不少技術(shù)不錯的 C++/C 程序員,很少有人能拍拍胸脯說通曉指針與內(nèi)存管理(包括我自己)。我最初學(xué)習(xí) C 語言時特別怕指針,導(dǎo)致我開發(fā)第一個應(yīng)用軟件(約 1 萬行 C 代碼)時沒有使用一個指針,全用數(shù)組來頂替指 針,實在蠢笨得過分。躲避指針不是辦法,后來我改寫了這個軟件,代碼量縮小到原先的一半。 我的經(jīng)驗教訓(xùn)是: 中國最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者所有 ) ( 1)越是怕指針,就越要使用指針。不會正確使用指針,肯定算不上是合格的程序員。 ( 2)必須養(yǎng)成“使用調(diào)試器逐步跟蹤程序”的習(xí)慣,只有這樣才能發(fā)現(xiàn)問題的本質(zhì)。
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1