zoukankan      html  css  js  c++  java
  • 动态内存管理2

    如果一个异常发生在成功分配内存后,但在delete语句执行之前,就会发生内存泄漏。

    C++标准库提供了模板类uique_ptr来处理内存泄漏。

    一个类uique_ptr的对象维护了指向动态分配内存的一个指针,当一个uique_ptr对象的析构函数被调用时,它将对其指针数据成员执行delete操作。

    通过uique_ptr类的重载赋值运算符或拷贝构造函数,可以使一个uique_ptr类对象转让它管理的动态内存的所有权。

    函数set_new_handler的参数是一个函数指针,指向的函数没有参数并且返回值为void类型。指针指向的函数在new失败时将被调用。

    一旦set_new_handler在程序中注册一个new处理器,那么在new失败时,new运算符不会抛出bad_alloc异常,它将错误推给new处理器函数来处理。

    #include<iostream>
    #include<stdexcept>
    #include<new>
    #include<cstdlib>
    using namespace std;
    void customNewHandler() {
        cerr << "customNewHandler was called";
        abort();
    }
    int main() {
        double *ptr[50];
        set_new_handler(customNewHandler);
        system("pause");
    }
  • 相关阅读:
    Linux下安装MySQL数据库(压缩包方式安装)
    使用Gitblit 在windows 上部署你的Git Server
    windows下使用docker的常用命令
    CentOS7安装Docker与使用篇
    linux安装redis
    Linux系统目录
    shiro之授权
    shiro之身份认证
    redis
    迅为4412uboot烧坏了报错问题
  • 原文地址:https://www.cnblogs.com/afreeman/p/8469649.html
Copyright © 2011-2022 走看看