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

正文內(nèi)容

c內(nèi)存管理詳解(doc27)-經(jīng)營管理-文庫吧資料

2024-08-24 15:58本頁面
  

【正文】 w,以及一個能完成清理與釋放內(nèi)存工作的運算符 delete。對象在創(chuàng)建的同時要自動執(zhí)行構(gòu)造函數(shù),對象在消亡之前要自動執(zhí)行析構(gòu)函數(shù)。它們都可用于申請動態(tài)內(nèi)存和釋放內(nèi)存。但奇怪的是我運行這個程序時居然沒有出錯,這可能與編譯器有關(guān)。 // 注意 a 的生命期 } pFunc()。 p = amp。 void Test(void) 中國最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者所有 ) { A *p。這種情況讓人防不勝防,示例程序如下: class A { public: void Func(void){ cout “Func of class A” endl。 ( 2)指針 p 被 free 或者 delete 之后,沒有置為 NULL, 讓人誤以為 p是個合法的指針。例如 char *p = NULL。任何指針變量剛被創(chuàng)建時不會自動成為NULL 指針,它的缺省值是隨機的,它會亂指一氣。但是“野指針”是很危險的, if語句對它不起作用。 杜絕“野指針” “ 野指針”不是 NULL 指針,是指向“垃圾”內(nèi)存的指針。因為 GetString2 內(nèi)的“ hello world” 是常量字符串,位于靜態(tài)存儲區(qū),它在程序生命期內(nèi)恒定不變。 中國最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者所有 ) cout str endl。 } void Test5(void) { char *str = NULL。 如果把示例 改寫成示例 ,會怎么樣? char *GetString2(void) { char *p = hello world。 // str 的內(nèi)容是垃圾 cout str endl。 // 編譯器將提出警告 } void Test4(void) { char *str = NULL。 char *GetString(void) { char p[] = hello world。 } 示例 用函數(shù)返回值來傳遞動態(tài)內(nèi)存 用函數(shù)返回值來傳遞動態(tài)內(nèi)存這種方法雖然好用,但是常常有人把 return語句用錯了。 cout str endl。 中國最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者所有 ) str = GetMemory3(100)。 return p。這種方法更加簡單,見示例 。 free(str)。str,而不是 str strcpy(str, hello)。str, 100)。 } void Test2(void) { char *str = NULL。 如果非得要用指針參數(shù)去申請內(nèi)存,那么應(yīng)該改用“指向指針的指針”,見示例 。所以函數(shù) GetMemory 并不能輸出任何東西。這就是指針可以用作輸出參數(shù)的原因。編譯器總是要為函數(shù)的每個參數(shù)制作臨時副本,指 針參數(shù) p 的副本是 _p,編譯器使 _p = p。 // str 仍然為 NULL 中國最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者所有 ) strcpy(str, hello)。 } void Test(void) { char *str = NULL。 // 4 字節(jié)而不是 100 字節(jié) } 示例 ( b) 數(shù)組退化為指針 指針參數(shù)是如何傳遞內(nèi)存的? 如果函數(shù)的參數(shù)是一個指針,不要指望用該指針去申請動態(tài)內(nèi)存。 // 12 字節(jié) cout sizeof(p) endl。 char *p = a。 示例 733( b)中,不論數(shù)組 a 的容量是多少, sizeof(a)始終等于sizeof(char *)。 C++/C 語言沒有辦法知道指針?biāo)傅膬?nèi)存容量,除非在申請內(nèi)存時記住它。指針 p 指向a,但是 sizeof(p)的值卻是 4。 if(strcmp(p, a) == 0) // 不要用 if (p == a) 中國最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者所有 ) 示例 數(shù)組和指針的內(nèi)容復(fù)制與比較 計算內(nèi)存容量 用運算符 sizeof 可以計算出數(shù)組的容量(字節(jié)數(shù))。 strcpy(p,a)。 if(strcmp(b, a) == 0) // 不能用 if (b == a) // 指針 int len = strlen(a)。 strcpy(b, a)。 // 數(shù)組 char a[] = hello。要想復(fù)制 a 的內(nèi)容,可以先用庫函數(shù) malloc 為 p 申請一塊容量為strlen(a)+1個字符的內(nèi)存,再用 strcpy 進(jìn)行字符串復(fù)制。同理,比較 b 和 a 的內(nèi)容是否相同,不能用 if(b==a) 來判斷,應(yīng)該用標(biāo)準(zhǔn)庫函數(shù) strcmp 進(jìn)行比較。示例 732 中,若想把數(shù)組 a 的內(nèi)容復(fù)制給數(shù)組 b,不能用語句 b = a ,否則將產(chǎn)生編譯錯誤。 // 編譯器不能發(fā)現(xiàn)該錯誤 cout p endl。 char *p = “ world” 。 a[0] = ‘X’。從語法上看,編譯器并不覺得語句 p[0]= ‘X’ 有什么不妥,但是該語句企圖修改常量字符串的內(nèi)容而導(dǎo)致運行錯誤。 a 的內(nèi)容可以改變,如 a[0]= ‘X’ 。 下面以字符串為例比較指針與數(shù)組的 特性。 中國最大的管理資料下載中心 (收集
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1