日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

new失败跟踪函数_关于针对class自定义new操作符失败的函数处理

發(fā)布時(shí)間:2025/3/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 new失败跟踪函数_关于针对class自定义new操作符失败的函数处理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

#include

#include

using namespace std;

class CSaveCurHandler //用于管理new_handler,保存原始的new_handler,在new成功結(jié)束后還原.

{

private:

new_handler cur;

public:

CSaveCurHandler(new_handler nh) :cur(nh){}

~CSaveCurHandler()

{

set_new_handler(cur);

}

};

template

class CWidget

{

private:

static new_handler cur_handler;

public:

static void set_handler(new_handler nh)

{

cur_handler = nh;

}

static void *operator new(size_t size) throw(std::bad_alloc)

{

CSaveCurHandler sch(set_new_handler(cur_handler)); //將原始的保存至CSaveCurHandler對(duì)象中

return ::operator new(size); //,調(diào)用系統(tǒng)原始的new,返回后自動(dòng)還原new_handler

}

};

void outMen()

{

cout << "內(nèi)存不夠";

}

template

new_handler CWidget::cur_handler = outMen;

class MY : public CWidget

{

private:

char buf[1025 * 1024 * 1024];

};

int main()

{

MY::set_handler(outMen);

while (1)

MY *p = new MY;

cin.get();

return 0;

}

原文:http://www.cnblogs.com/c-slmax/p/5946413.html

總結(jié)

以上是生活随笔為你收集整理的new失败跟踪函数_关于针对class自定义new操作符失败的函数处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。