亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問板塊 發(fā)新帖
查看: 2162 | 回復(fù): 1
打印 上一主題 下一主題

[C++] 關(guān)注C++細(xì)節(jié)——淺談指針使用中注意事項(xiàng) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-09-15 11:30 |只看該作者 |倒序?yàn)g覽
相信大家對(duì)指針的用法已經(jīng)很熟了,這里也不多說些定義性的東西了,只說一下指針使用中的注意事項(xiàng)吧。

一.在定義指針的時(shí)候注意連續(xù)聲明多個(gè)指針時(shí)容易犯的錯(cuò)誤,例如int * a,b;這種聲明是聲明了一個(gè)指向int類型變量的指針a和一個(gè)int型的變量b,這時(shí)候要清醒的記著,而不要混淆成是聲明了兩個(gè)int型指針。

二.要避免使用未初始化的指 針。很多運(yùn)行時(shí)錯(cuò)誤都是由未初始化的指針導(dǎo)致的,而且這種錯(cuò)誤又不能被編譯器檢查所以很難被發(fā)現(xiàn)。這時(shí)的解決辦法就是盡量在使用指針的時(shí)候定義它,如果早 定義的化一定要記得初始化,當(dāng)然初始化時(shí)可以直接使用cstdlib中定義的NULL也可以直接賦值為0,這是很好的編程習(xí)慣。

三.指針賦值時(shí)一定要保證類型匹配,由于指針類型確定指針?biāo)赶驅(qū)ο蟮念愋,因此初始化或賦值時(shí)必須保證類型匹配,這樣才能在指針上執(zhí)行相應(yīng)的操作。

四.void * 類型的指針,其實(shí)這種形式只是記錄了一個(gè)地址罷了,如上所說,由于不知道所指向的數(shù)據(jù)類型是什么所以不能進(jìn)行相應(yīng)的操作。其實(shí)void * 指針僅僅支持幾種有限的操作:1.與另外的指針進(jìn)行比較,因?yàn)関oid *類型里面就是存的一個(gè)地址,所以這點(diǎn)很好理解;2.向函數(shù)傳遞void *指針或從函數(shù)返回void *指針,舉個(gè)例子吧,我們平時(shí)常用的庫(kù)函數(shù)qsort中的比較函數(shù)cmp(個(gè)人習(xí)慣于用這個(gè)名字)中傳遞的兩個(gè)參數(shù)就是const void *類型的,用過的應(yīng)該很熟了;3.給另一個(gè)void * 類型的指針賦值。還是強(qiáng)調(diào)一下不能使用void * 指針操縱它所指向的對(duì)象。

五. 不要將兩個(gè)指針變量指向同一塊動(dòng)態(tài)內(nèi)存。這個(gè)容易引起很嚴(yán)重的問題。如果將兩個(gè)指針變量指向同一塊動(dòng)態(tài)內(nèi)存,而其中一個(gè)生命期結(jié)束釋放了該動(dòng)態(tài)內(nèi)存,這個(gè) 時(shí)候就會(huì)出現(xiàn)問題,另一個(gè)指針?biāo)赶虻牡刂冯m然被釋放了但該指針并不等于NULL,這就是所謂的懸垂指針錯(cuò)誤,這種錯(cuò)誤很難被察覺,而且非常嚴(yán)重,因?yàn)檫@ 時(shí)該指針的值是隨機(jī)的,可能指向一個(gè)系統(tǒng)內(nèi)存而導(dǎo)致程序崩潰。但也就是因?yàn)橹凳请S機(jī)的,所以運(yùn)行程序時(shí)有時(shí)正常有時(shí)崩潰,這一點(diǎn)要特別注意。


六.在動(dòng)態(tài)delete釋放一個(gè)指針?biāo)赶虻膬?nèi)存后注意將該指針置空。

七.在為一個(gè)指針再次分配內(nèi)存之前一定要保證它原先沒有指向其他內(nèi)存,防止出現(xiàn)內(nèi)存泄漏。解決的辦法是我們必須判斷該指針是否為空,這時(shí)候就顯示出第六條的優(yōu)勢(shì),因?yàn)槿绻尫拍硟?nèi)存后相應(yīng)指針不置空的話就不能為其分配新內(nèi)存了。所以第六條很有必要。

八.雖然程序在退出main函數(shù)時(shí)會(huì)釋放所有內(nèi)存空間,但對(duì)于大型程序最好還是某塊內(nèi)存不用了立刻釋放,而不要指望系統(tǒng)最后的回收,因?yàn)閮?nèi)存泄漏會(huì)慢慢消耗系統(tǒng)資源直到內(nèi)存不足而程序死掉。

九.在用new動(dòng)態(tài)分配完內(nèi)存之后一定要判斷是否分配成功,分配成功后才能使用。

最后提醒兩條:任何指針聲明后一定要初始化;任何指針用free或delete釋放之后一定要置空。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2011-09-15 11:48 |只看該作者
八.雖然程序在退出main函數(shù)時(shí)會(huì)釋放所有內(nèi)存空間,但對(duì)于大型程序最好還是某塊內(nèi)存不用了立刻釋放,而不要指望系統(tǒng)最后的回收,因?yàn)閮?nèi)存泄漏會(huì)慢慢消耗系統(tǒng)資源直到內(nèi)存不足而程序死掉。

雖然程序在退出main函數(shù)時(shí)會(huì)釋放所有內(nèi)存空間?這個(gè)好像不太同意哦。!系統(tǒng)從內(nèi)核分給你的資源(比如某個(gè)句柄),退出main也不會(huì)釋放掉吧。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP