码迷,mamicode.com
首页 > 其他好文 > 详细

动态内存管理2

时间:2018-02-25 17:15:58      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:hand   就会   没有   内存   返回   using   color   pos   ios   

如果一个异常发生在成功分配内存后,但在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");
}

 

动态内存管理2

标签:hand   就会   没有   内存   返回   using   color   pos   ios   

原文地址:https://www.cnblogs.com/afreeman/p/8469649.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!