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

C語(yǔ)言new操作的安全性分析

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

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

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

其實(shí),這里的 if ( p == 0 ) 完全沒(méi)有意義的。C++ 里,如果 new 分配內(nèi)存失敗,默認(rèn)是拋出異常的。所以,如果分配成功,p == 0 就絕對(duì)不會(huì)成立;而如果分配失敗了,也不會(huì)執(zhí)行 if ( p == 0 ),因?yàn)榉峙涫r(shí),new 就會(huì)拋出異常跳過(guò)后面的代碼。如果你想檢查 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++實(shí)現(xiàn)優(yōu)酷土豆去視頻廣告的方法

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

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

    C語(yǔ)言 深入講解條件編譯的用處

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

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

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

    C++版本簡(jiǎn)易Flappy bird

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

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

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

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

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

    一起來(lái)看看C語(yǔ)言線性表的線性鏈表

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

    C++ 遞歸遍歷文件并計(jì)算MD5的實(shí)例代碼

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

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

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

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

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

最新評(píng)論