a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

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

2020-01-26 15:28:21
字體:
來源:轉載
供稿:網友

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

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

其實,這里的 if ( p == 0 ) 完全沒有意義的。C++ 里,如果 new 分配內存失敗,默認是拋出異常的。所以,如果分配成功,p == 0 就絕對不會成立;而如果分配失敗了,也不會執行 if ( p == 0 ),因為分配失敗時,new 就會拋出異常跳過后面的代碼。如果你想檢查 new 是否成功,應該捕捉異常:

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

但是 有的程序員并不習慣捕捉異常,標準C++也提供了一種方法不拋出異常而返回空指針。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 国产99久久精品 | 久久久久国产精品午夜一区 | 精品欧美国产 | 亚洲欧洲日韩在线 | 亚洲精品日韩色噜噜久久五月 | av超碰在线 | 图片区 国产 欧美 另类 在线 | 日本国产在线 | 精品久久一二三区 | 色站综合 | 中文字幕在线第二页 | 黄色免费观看网站 | 久久久久久亚洲 | 成人高清视频在线观看 | 在线免费看a| 在线免费国产视频 | 性生生活大片免费看视频 | 国产精品乱码一区二区三区 | 国产成人一区 | 亚洲成人av一区二区三区 | 日韩在线精品强乱中文字幕 | 亚洲第一视频 | 91精品一区二区三区久久久久久 | 久久精品导航 | 99久久网站 | 中文字幕网在线 | 色婷婷一区二区三区四区 | 在线观看国产一区 | 欧美暴操 | 婷婷天堂 | 亚洲欧洲无码一区二区三区 | 精品久久久久久亚洲综合网站 | 成人精品一区二区三区中文字幕 | 亚洲第一黄色 | 亚洲精品永久免费 | 国产在线拍揄自揄拍视频 | 亚洲男人天堂2023 | 欧美精品三区 | 日韩精品一区二区三区老鸭窝 | 国产二区视频 | 国产精品不卡 |