欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2014年07月18日 18:13:08   投稿:shichen2014  
這篇文章主要介紹了C語言new操作的安全性分析,需要的朋友可以參考下

對于學(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

其實,這里的 if ( p == 0 ) 完全沒有意義的。C++ 里,如果 new 分配內(nèi)存失敗,默認(rèn)是拋出異常的。所以,如果分配成功,p == 0 就絕對不會成立;而如果分配失敗了,也不會執(zhí)行 if ( p == 0 ),因為分配失敗時,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

相關(guān)文章

  • C++實現(xiàn)優(yōu)酷土豆去視頻廣告的方法

    C++實現(xiàn)優(yōu)酷土豆去視頻廣告的方法

    這篇文章主要介紹了C++實現(xiàn)優(yōu)酷土豆去視頻廣告的方法,實例分析了C++實現(xiàn)屏蔽功能的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C語言 深入講解條件編譯的用處

    C語言 深入講解條件編譯的用處

    C語言提供了條件編譯的語法,就是在編譯源碼的時候,可以選擇性地編譯指定的代碼。例如我們開發(fā)一個兼容windows系統(tǒng)和linux系統(tǒng)運行的項目,那么,一些與操作系統(tǒng)密切相關(guān)的代碼,就需要進(jìn)行選擇性編譯
    2022-04-04
  • C語言深入探究斐波那契數(shù)列

    C語言深入探究斐波那契數(shù)列

    斐波那契數(shù)一般指斐波那契數(shù)列。 斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列,因數(shù)學(xué)家萊昂納多·斐波那契(Leonardo Fibonacci)以兔子繁殖為例子而引入,故又稱為兔子數(shù)列
    2022-05-05
  • C++版本簡易Flappy bird

    C++版本簡易Flappy bird

    這篇文章主要介紹了C++版本簡易Flappy bird的相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • 基于atoi()與itoa()函數(shù)的內(nèi)部實現(xiàn)方法詳解

    基于atoi()與itoa()函數(shù)的內(nèi)部實現(xiàn)方法詳解

    本篇文章是對atoi()與itoa()函數(shù)的內(nèi)部實現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++中的最小生成樹算法超詳細(xì)教程

    C++中的最小生成樹算法超詳細(xì)教程

    這篇文章主要介紹了C++中的最小生成樹算法超詳細(xì)教程,最小生成樹的最著名的算法有兩個, 一個是Prim算法, 另一個當(dāng)然就是Kruskal算法, 接下來, 我將盡我所能的介紹這兩個算法, 也算是對自己學(xué)習(xí)的一個回顧吧,需要的朋友可以參考下
    2023-08-08
  • 一起來看看C語言線性表的線性鏈表

    一起來看看C語言線性表的線性鏈表

    這篇文章主要為大家詳細(xì)介紹了C語言線性表的線性鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++ 遞歸遍歷文件并計算MD5的實例代碼

    C++ 遞歸遍歷文件并計算MD5的實例代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于C++ 遞歸遍歷文件并計算MD5的實例代碼,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-07-07
  • 一篇文章帶你入門C語言:數(shù)組

    一篇文章帶你入門C語言:數(shù)組

    這篇文章主要介紹了C語言中數(shù)組的一些基本知識小結(jié),其中重點是對于數(shù)組的內(nèi)存分配相關(guān)方面的知識整理,需要的朋友可以參考下
    2021-08-08
  • C指針原理教程之編譯原理-小型計算器實現(xiàn)

    C指針原理教程之編譯原理-小型計算器實現(xiàn)

    本文給大家分享的是如何使用C語言編寫一個小型計算器的實例代碼,有需要的小伙伴可以參考下
    2019-02-02

最新評論