zoukankan      html  css  js  c++  java
  • 内存分配失败捕捉 set_new_handler

    当内存分配请求不能满足时,调用你预先指定的一个出错处理函数。这个方法基于一个常规,即当operator new不能满足请求时,会在抛出异常之前调用客户指定的一个出错处理函数——一般称为new-handler函数。(operator new实际工作起来要复杂一些,详见条款8)
    指定出错处理函数时要用到 set_new_handler 函数,它在头文件<new>里大致是象下面这样定义的:
        typedef void (*new_handler)();
        new_handler set_new_handler(new_handler p) throw();
    可以看到,new_handler 是一个自定义的函数指针类型,它指向一个没有输入参数也没有返回值的函数。set_new_handler 则是一个输入并返回new_handler类型的函数。
    set_new_handler 的输入参数是 operator new 分配内存失败时要调用的出错处理函数的指针,返回值是 set_new_handler 没调用之前就已经在起作用的旧的出错处理函数的指针。
    可以象下面这样使用set_new_handler:
        // function to call if operator new can't allocate enough memory
        void noMoreMemory()
        {
            cerr << "Unable to satisfy request for memory\n";
            abort();
        }
        int main()
        {
            set_new_handler(noMoreMemory);
            int *pBigDataArray = new int[100000000];
            ...
        }

  • 相关阅读:
    有关css的效果展示
    php将代码上传至服务器步骤
    php连接数据库
    PHP如何从一个页面跳转到另一个页面
    Windows计算器
    查询本地正在运行的端口号
    wamp虚拟路径访问配置
    sublime text3 Emmet (原zenCoding)安装方法
    Latex(一)公式自动编号与自动引用
    Linux下Django开发学习(一)
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/2800490.html
Copyright © 2011-2022 走看看