国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言new操作的安全性分析

2020-01-26 15:28:21
字體:
供稿:網(wǎng)友

對于學(xué)習(xí)過C語言的朋友應(yīng)該都知道,使用 malloc/calloc 等分配內(nèi)存的函數(shù)時,一定要檢查其返回值是否為“空指針”(亦即檢查分配內(nèi)存的操作是否成功),這是良好的編程習(xí)慣,也是編寫可靠程序所必需的。但是,如果你簡單地把這一招應(yīng)用到new上,那可就不一定正確了。我經(jīng)常看到類似這樣的代碼:

int * p = new int [MAXSIZE]if (p == 0) // 檢查p指針是否為空return -1;//other code

其實(shí),這里的 if ( p == 0 ) 完全沒有意義的。C++ 里,如果 new 分配內(nèi)存失敗,默認(rèn)是拋出異常的。所以,如果分配成功,p == 0 就絕對不會成立;而如果分配失敗了,也不會執(zhí)行 if ( p == 0 ),因?yàn)榉峙涫r,new 就會拋出異常跳過后面的代碼。如果你想檢查 new 是否成功,應(yīng)該捕捉異常:

try{int * p = new int [MAXSIZE]}catch( bad_alloc & exp){cerrr<<exp.what()<<endl;}

但是 有的程序員并不習(xí)慣捕捉異常,標(biāo)準(zhǔn)C++也提供了一種方法不拋出異常而返回空指針。

int * p = new (std::nothrow)int [MAXSIZE]if (p == 0) // 檢查p指針是否為空return -1;//other code

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 安多县| 怀柔区| 淳安县| 临桂县| 平远县| 咸阳市| 道孚县| 德安县| 青冈县| 林州市| 张掖市| 和平区| 固安县| 鸡西市| 繁峙县| 河源市| 准格尔旗| 溧水县| 凌海市| 普陀区| 临洮县| 新宁县| 满城县| 忻州市| 南汇区| 隆安县| 阳曲县| 商都县| 榆社县| 霍山县| 宁津县| 峨眉山市| 杨浦区| 梁河县| 会理县| 浦城县| 米脂县| 龙口市| 资兴市| 延安市| 临夏县|