- 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)