欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么在C++中使用set_new_handler函數(shù)

怎么在C++中使用set_new_handler函數(shù)?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、介休網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為介休等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

一、函數(shù)的定義

函數(shù)在namespace std中有如下定義(C++98與C++11版本不一致):

Typedef void (*new_handler)();
 
new_handler set_new_handler(new_handler new_p) throw();  //C++98
new_handler set_new_handler (new_handler new_p) noexcept; //C++11

二、函數(shù)介紹

該函數(shù)的作用是:當(dāng)new操作或new[]操作失敗時(shí)調(diào)用參數(shù)所指的new_p函數(shù)

異常安全:

  • C++98、C++11分別在函數(shù)后面使用了throw()、noexcept聲明,所以該函數(shù)(set_new_handler)不會(huì)拋出異常

  • 注意:如果new_p是沒(méi)有實(shí)現(xiàn)適當(dāng)功能的函數(shù)指針(見(jiàn)下面的參數(shù)說(shuō)明),或者如果new_p是無(wú)效的指針,它會(huì)導(dǎo)致未定義的行為

數(shù)據(jù)爭(zhēng)用:

  • 調(diào)用此函數(shù)不會(huì)引入數(shù)據(jù)競(jìng)爭(zhēng),任何這樣的調(diào)用將會(huì)和隨后set_new_handler和set_new_handler的調(diào)用同步

  • 注意,此要求僅適用于set_new_handler函數(shù),但對(duì)于作為參數(shù)(new_p)傳遞的新處理函數(shù)卻非必須

函數(shù)說(shuō)明

1.   set_new_handler函數(shù)的作用是設(shè)置new_p指向的函數(shù)為new操作或new[]操作失敗時(shí)調(diào)用的處理函數(shù)。

2.   設(shè)置的處理函數(shù)可以嘗試使更多空間變?yōu)榭煞峙錉顟B(tài),這樣新一次的new操作就可能成功。當(dāng)且僅當(dāng)該函數(shù)成功獲得更多可用空間它才會(huì)返回;否則它將拋出bad_alloc異常(或者繼承該異常的子類)或者終止程序(例如調(diào)用abort或exit)。

3.   如果設(shè)置的處理函數(shù)返回了(例如,該函數(shù)成功獲得了更多的可用空間),它可能將被反復(fù)調(diào)用,直到內(nèi)存分配成功,或者它不再返回,或者被其它函數(shù)所替代。

4.   在尚未用set_new_handler設(shè)置處理函數(shù),或者設(shè)置的處理函數(shù)為空時(shí),將調(diào)用默認(rèn)的處理函數(shù),該函數(shù)在內(nèi)存分配失敗時(shí)拋出bad_alloc異常。

三、函數(shù)的參數(shù)
new_p:

  • 當(dāng)new操作或new[]操作失敗時(shí)調(diào)用的函數(shù)

  • 該函數(shù)參數(shù)列表為空,且返回值類型為void

  • 該函數(shù)可以嘗試獲得更多的可用空間,或者拋出異常,或者終止程序

  • 如果是一個(gè)空指針或0,處理函數(shù)將被重置為默認(rèn)值(將會(huì)執(zhí)行拋出bad_alloc異常)

設(shè)置的處理函數(shù)可以嘗試使更多空間變?yōu)榭煞峙錉顟B(tài),這樣新一次的new操作就可能成功。當(dāng)且僅當(dāng)該函數(shù)成功獲得更多可用空間它才會(huì)返回;否則它將拋出bad_alloc異常(或者繼承該異常的子類)或者終止程序(例如調(diào)用abort或exit)

如果設(shè)置的處理函數(shù)返回了(例如,該函數(shù)成功獲得了更多的可用空間),它可能將被反復(fù)調(diào)用,直到內(nèi)存分配成功,或者它不再返回,或者被其它函數(shù)所替代

如果未設(shè)置處理函數(shù),或者設(shè)置的處理函數(shù)為空時(shí),將調(diào)用默認(rèn)的處理函數(shù),該函數(shù)在內(nèi)存分配失敗時(shí)拋出bad_alloc異常

四、函數(shù)的返回值

  • 返回先前被設(shè)置的處理函數(shù)指針

  • 如果set_new_handler參數(shù)為空或者已被重置,將返回空指針

  • 返回的函數(shù)指針是無(wú)參數(shù)的且返回值為void類型的

五、演示案例

下面程序中new操作分配內(nèi)存失敗時(shí)將調(diào)用no_memory函數(shù)

// new_handler example
#include <iostream>   // std::cout
#include <cstdlib>   // std::exit
#include <new>     // std::set_new_handler
 
void no_memory () {
 std::cout << "Failed to allocate memory!\n";
 std::exit (1);
}
 
int main () {
  //綁定no_memory處理函數(shù)
  std::set_new_handler(no_memory);
  
  std::cout << "Attempting to allocate 1 GiB...";
  char* p = new char [1024*1024*1024];
  std::cout << "Ok\n";
  
  delete[] p;
  return 0;
}

關(guān)于怎么在C++中使用set_new_handler函數(shù)問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

當(dāng)前名稱:怎么在C++中使用set_new_handler函數(shù)
文章起源:http://aaarwkj.com/article10/gdisdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、云服務(wù)器、網(wǎng)站設(shè)計(jì)公司、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開發(fā)
欧美日韩精品偷拍一区二区| 美女被男人操国产精品| 国产精品亚洲av性色| 青青草针对华人在线视频| 中文字幕日韩精品在线看| 在线观看一区二区三区国产视频 | 欧美日本道一区二区三区 | 欧美一级免费黄片在线播放| 亚洲综合另类视频在线观看| 精品一区二区三区毛卡片| 国产一区二区三区在线视频播放 | 人体蜜桃视频一区二区| 亚洲永久免费在线观看| 男人的天堂在线观看黄片| 日韩欧美亚洲国产资源| 国产成人av在线观看| 亚洲精品综合在线二区| 久久精品熟女亚洲av色| 免费观看久久黄色大片| 久久久这里只有精品99| 久久精品国产亚洲av不丁香| 精品人妻少妇一区二区三区| 小仙女精品经典三级永久| 久久精品国产91麻豆| 手机在线观看av大片| 国产一级二级三级亚洲| 97全国免费观看视频| 久久久久久国产精品亚洲| 久久亚洲欧洲日本韩国欧美| 91人妻精品一区二区| 97精品免费视频观看| 亚洲国产日本一区自拍| av天堂资源在线播放| 日本黄色美女日本黄色| 日韩高清一级黄色大片网站| 国产三级精品久久三级国专区| 手机av在线 中文字幕| 亚洲av色福免费网站| 黄色录像三级黄色录像三级黄色 | 成人性生交免大片免费| 久久精品国产亚洲av高清一区|