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

正文內(nèi)容

【能力素質(zhì)】c內(nèi)存管理詳解-資料下載頁(yè)

2025-08-23 16:03本頁(yè)面
  

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