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

第十八章 用于大型程序的工具

时间:2017-11-07 13:17:39      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:答案   share   程序   异常   析构   删除   logs   div   函数   

18.1

异常对象的类型:

(a):range_error

(b):range_error

throw p将抛出一个exception类型的异常

 

18.2

分配的动态内存将无法释放

答案:发生异常,所在块之前的临时变量皆会被销毁,V会调用vector类的析构函数进行销毁,并释放相关内存,P指针会被销毁,但是P指针指向的内存由于是动态分配的,所以该内存不会被释放,造成内存泄漏。输入流对象会调用ifstream类的析构函数销毁,最后程序被终止。

 

18.3

方一:使用智能指针,并传入删除的lambda表达式

    shared_ptr<int> p(new int[v.size()], [](int *p) { delete[] p; });//lambda表达式相当于一个删除器

方二:使用类:创建一个包含一个int*的类,在析构函数进行delete文件指针

class intAr    
{    
    int *p=nullptr;    
public:    
    intAr(size_t n): p(new int[n]){}    
    ~intAr()    
    {    
        delete []p;    
    }    
}    

  

 

第十八章 用于大型程序的工具

标签:答案   share   程序   异常   析构   删除   logs   div   函数   

原文地址:http://www.cnblogs.com/xzxl/p/7798477.html

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