随笔- 88  评论- 433  文章- 13 

前天一道我不能回答好的面试题:内存泄露你怎么解决?希望大家不吝赐教

        题目描述很简单:内存泄露了,现象是看到该程序的内存占用率不断增长,作为一个程序员你怎么解决这个问题?

        我答的不好,回来之后又好好的想了想,其实回答这个问题应该从不同的方面来考虑

        首先分析内存泄露容易发生的情况,《OOP启示录》对这些情况都讲得挺详细的,在类的构造函数与析构函数中没有匹配地调用 new/delete!没有正确地清除嵌套的对象指针!在释放对象数组时,没有使用delete [];指向由指向对象的指针构成的数组不等同于与对象数组。缺少拷贝构造函数,编译器缺省添加的拷贝构造函数不足,缺省的拷贝构造函数采用位拷贝!......用我自己的想法描述就是,每次自己分配一块内存区域的时候,都要想到用完之后要将该内存区释放掉!当然特殊的情形这句话不适用。
       既然知道了内存泄露事件的多发地带,我们可以多在这些地方设置检察机制,相对来说就有一点针对性了!面试官说这样是一种解决办法,可能10000个函数,我们可以把错误范围缩小到200个,然后你还有什么办法继续解决这个问题?

      我基本上是把我暂时能想到的都说了,什么设置断点调试啊,用IDE工具看地址变化。。。不过好像都不能达到面试官满意度。。。
      他说没有这样的IDE工具给你用,接着你怎么解决?
      唉。。。受打击了,事实如此,我对这个不够理解。。。

     之后上网想找找内存泄露相关的资料,搜出来的文章大部分都是林锐高质量C++编程里关于内存的那篇,大感失望,怎么就没有其他更好更深入的文章了呢???

     //昨天在C++博客发了一次,没人回复,郁闷啊,园子里这么多人懂还是不懂?
     大家讨论讨论,我相信这个问题挺具有代表性的,大家讨论出个结果,都弄懂了岂不是更好?
posted on 2006-05-13 09:58 秋雨飘飞 阅读(...) 评论(...) 编辑 收藏