• c++中的内存空间不足和自定义处理内存不足


    new操作符动态分配内存时,首先它会调用对象的operator new()函数分配相应大的内存(如果对象类没有重载operator new()函数,则默认调用<new>头文件里的operator new()函数分配内存);接着调用对象的构造函数,初始化这块内存;最后返回指向该内存块的指针。

    当分配内存时,如果内存空间不够用,则分配函数会默认抛出bad_allco类型异常,供用户接收并处理。另外,我们还能自己定义如何处理空间不足,用一个函数指明该如何处理内存不足。下面这个例子中,必然会导致内存不足,我用set_new_handler()指定一个自定义函数去处理内存不足问题,之后,分配内存不足时,不会默认抛出bad_allco()异常,而是去执行我定义的函数,我定义的函数在输出信息后又抛出了异常(当然这个函数你可以随便写)。

    #include <iostream>
    //#include <new>
    using namespace std;

    void out_of_store()
    {
        cerr << "my bad_alloc ";
        throw bad_alloc();
    }

    int main()
    {
        set_new_handler(out_of_store);
        try {
            for (;;)
                new char[10000];
        }
        catch (bad_alloc) {
            cerr << "Memory exhausted! ";
        }
        system("PAUSE");
        return 0;
    }

  • 相关阅读:
    TFIDF
    奇异值分解(singular value decomposition,SVD)
    (转载)先验分布
    在博客中写公式的两种方法
    linux 下配置JDK JRE ECLIPSE TOMCAT
    tensor decomposition
    Form界面设置只读
    FORM LOV特性
    在Oracle Form中,如何实现自动编号(行号)的功能
    文件夹错误frm41097,frm41053
  • 原文地址:https://www.cnblogs.com/xjjsk/p/5450858.html
Copyright © 2020-2023  润新知