常见内存泄露及解决方案.docVIP

  • 6
  • 0
  • 约6.06千字
  • 约 11页
  • 2017-08-22 发布于重庆
  • 举报
常见内存泄露及解决方案.doc

常见内存泄露及解决方案-选自ood启示录 new/delete, array new/arrray delete匹配 case 1: ?在类的构造函数与析构函数中没有匹配地调用 new/delete! ?解决方法:检查构造函数,在出现new的情况下,按相反的顺序在析构函数中匹配添加delete! ?这里有两个意思: ??1〉new与delete匹配,array new/array delete匹配; ??2〉出现在前面的new要比出现在后面的new后匹配各自的delete; ??比如: ??构造函数: ???m_x = new int[10]; ???... ???m_y = new CString; ??则析构函数: ???delete m_y; ???... ???delete []m_x;?// 对于基本数据类型,用delete也可以,但为了统一,还?????// 是用array delete ??? case 2: ?没有正确地清除嵌套的对象指针 也就是说,某个对象以引用语义(指针)了包含另一个对象,而不是以值的方式。 ?解决办法: ??1〉养成好的成对编码习惯: ???在外部函数分配的堆内存,不要在调用函数里面释放,而在外部函数内释放; ??2〉尽量在构造函数里面分配内存,并注意不要犯case 1错误; ??3〉在基类/继承类各管各的内存;(具体解析见下面的case 8)

文档评论(0)

1亿VIP精品文档

相关文档