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

正文內(nèi)容

【能力素質(zhì)】c++內(nèi)存管理詳解-全文預(yù)覽

2024-09-15 16:03 上一頁面

下一頁面
  

【正文】 ){ Obj *a = (obj *)malloc(sizeof(obj))。 }  ~Obj(void){ cout “Destroy” endl。注意 new/delete不是庫函數(shù)?! τ诜莾?nèi)部數(shù)據(jù)類型的對象而言,光用maloc/free無法滿足動(dòng)態(tài)對象的要求。  函數(shù)Test在執(zhí)行語句pFunc()時(shí),對象a已經(jīng)消失,而p是指向a的,所以p就成了“野指針”。a。 }}。 所以,指針變量在創(chuàng)建的同時(shí)應(yīng)當(dāng)被初始化,要么將指針設(shè)置為NULL,要么讓它指向合法的內(nèi)存。人們一般不會(huì)錯(cuò)用NULL指針,因?yàn)橛胕f語句很容易判斷。無論什么時(shí)候調(diào)用GetString2,它返回的始終是同一個(gè)“只讀”的內(nèi)存塊。}      return語句返回常量字符串 return p。}       return語句返回指向“棧內(nèi)存”的指針  return p。用函數(shù)返回值來傳遞動(dòng)態(tài)內(nèi)存這種方法雖然好用,但是常常有人把return語句用錯(cuò)了?!trcpy(str, hello)。char *GetMemory3(int num){ char *p = (char *)malloc(sizeof(char) * num)。}       // 注意參數(shù)是 amp。void GetMemory2(char **p, int num){ *p = (char *)malloc(sizeof(char) * num)。在本例中,_p申請了新的內(nèi)存,只是把 _p所指的內(nèi)存地址改變了,但是p絲毫未變。毛病出在函數(shù)GetMemory中。}void Test(void){ char *str = NULL。 // 4字節(jié)    ?。╝) 計(jì)算數(shù)組和指針的內(nèi)存容量 char a[] = hello world。這是因?yàn)閟izeof(p)得到的是一個(gè)指針變量的字節(jié)數(shù),相當(dāng)于sizeof(char*),而不是p所指的內(nèi)存容量。if(strcmp(p, a) == 0) // 不要用 if (p == a)        數(shù)組和指針的內(nèi)容復(fù)制與比較 if(strcmp(b, a) == 0) // 不能用 if (b == a)// 指針int len = strlen(a)。// 數(shù)組char a[] = hello。同理,比較b和a的內(nèi)容是否相同,不能用if(b==a) 來判斷,應(yīng)該用標(biāo)準(zhǔn)庫函數(shù)strcmp進(jìn)行比較?!     ?修改數(shù)組和指針的內(nèi)容 cout a endl。指針p指向常量字符串“world”(位于靜態(tài)存儲(chǔ)區(qū),內(nèi)容為world),常量字符串的內(nèi)容是不可以被修改的。指針遠(yuǎn)比數(shù)組靈活,但也更危險(xiǎn)。指針與數(shù)組的對比  C++/C程序中,指針和數(shù)組在不少地方可以相互替換著用,讓人產(chǎn)生一種錯(cuò)覺,以為兩者是等價(jià)的。防止將未被初始化的內(nèi)存作為右值使用。導(dǎo)致產(chǎn)生“野指針”?! ? 釋放了內(nèi)存卻繼續(xù)使用它?! 『羞@種錯(cuò)誤的函數(shù)每被調(diào)用一次就丟失一塊內(nèi)存?! ? 內(nèi)存分配成功并且已經(jīng)初始化,但操作越過了內(nèi)存的邊界?! ? 內(nèi)存分配雖然成功,但是尚未初始化就引用它。  編程新手常犯這種錯(cuò)誤,因?yàn)樗麄儧]有意識到內(nèi)存分配會(huì)不成功。編譯器不能自動(dòng)發(fā)現(xiàn)這些錯(cuò)誤,通常是在程序運(yùn)行時(shí)才能捕捉到?! 。?) 從堆上分配,亦稱動(dòng)態(tài)內(nèi)存分配。例如全局變量,static變量。:;:;:C++內(nèi)存管理詳解程序員們經(jīng)常編寫內(nèi)存管理程序,往往提心吊膽。內(nèi)存在程序編譯的時(shí)候就已經(jīng)分配好,這塊內(nèi)存在程序的整個(gè)運(yùn)行期間都存在。棧內(nèi)存分配運(yùn)算內(nèi)置于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。常見的內(nèi)存錯(cuò)誤及其對策發(fā)生內(nèi)存錯(cuò)誤是件非常麻煩的事情。 常見的內(nèi)存錯(cuò)誤及其對策如下:  * 內(nèi)存分配未成功,卻使用了它。如果是用malloc或new來申請內(nèi)存,應(yīng)該用if(p==NULL) 或if(p!=NULL)進(jìn)行防錯(cuò)處理。所以無論用何種方式創(chuàng)建數(shù)組,都別忘了賦初值,即便是賦零值也不可省略,不要嫌麻煩。  * 忘記了釋放內(nèi)存,造成內(nèi)存泄露?! ?dòng)態(tài)內(nèi)存的申請與釋放必須配對,程序中malloc與free的使用次數(shù)一定要相同,否則肯定有錯(cuò)誤(new/delete同理)?! 。?)使用free或delete釋放了內(nèi)存后,沒有將指針設(shè)置為NULL?!  疽?guī)則2】不要忘記為數(shù)組和動(dòng)態(tài)內(nèi)存賦初值?!  疽?guī)則5】用free或delete釋放了內(nèi)存之后,立即將指針設(shè)置為NULL,防止產(chǎn)生“野指針”?! ≈羔樋梢噪S時(shí)指向任意類型的內(nèi)存塊,它的特征是“可變”,所以我們常用指針來操作動(dòng)態(tài)內(nèi)存。a的內(nèi)容可以改變,如a[0]= ‘X’。
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1