设计实现C++内存的半自动释放(三)

2014-11-24 09:25:38 · 作者: · 浏览: 3
相等的结点,返回其迭代器。所以其效率自然高得多。
其实我一开始也是使用remove的,当创建和销毁1024*1024个对象时,需要大约60分钟,这个时间长得不可忍受。
五、缺陷 这个设计也是有一定的缺陷的,就是它把内存的释放的任务都交给了析构函数,如果析构函数不被执行,则会发生内存泄漏,而且由于程序员在使用了该基类Object后,对内存的使用可能更加无道,所以如果析构函数不被执行,则其内存泄漏的数量可能是相当大的。例如,如果main函数改为如下:
int main()
{
    {
        Teacher *t = new Teacher;
        t->createStudent();
    }
    cout << Student::new_count<
     
其运行结果如下: \ \ 从运行的结果来看,创建的10个Student对象并没有被释放,原因是t把指向的new出来的Teacher对象并没有被释放(析构),其析构函数并没有执行。若想释放内存,则要自己写代码执行:delete t; 所以使用时,我们必须保证父对象被销毁,也就是说我们必须要保存父对象的析构函数要被执行,才能达到我们的内存自动释放的目标,所以这样的设计实现的内存自动释放只是半自动的。