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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十八章 用于大型程序的工具相关的知识,希望对你有一定的参考价值。

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;    
    }    
}    

  

 

以上是关于第十八章 用于大型程序的工具的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核设计与实现 第十八章

Linux内核分析——第十八章 调试

第十八章:构造方式

第十八章:构造方式

《linux内核设计与实现》读书笔记第十八章

第十八章 文本处理流编辑器:sed命令