operator= 要注意避免内存泄露(项目经验)

原创 2015年07月08日 17:14:40
指针不论是指向malloc还是new分配得到的内存,一定要注意在改变指针指向之前一定要先释放旧的内存块。

class Test
{
public:
                 Test()
                {
                                 if (p != NULL)
                                {
                                                 free(p );
                                                 p = NULL ;
                                }
                                 p = (char *)malloc( sizeof(char ));
                }
                 Test(const Test & C1)
                {
                                 cout << "ooo我在进行拷贝构造" << endl;
                                 p = (char *)malloc( sizeof(char ));
                                * p = *C1 .p;
                }
                ~ Test()
                {
                                 cout << "ooo我在析构" << endl;
                                 if (p !=NULL)
                                {
                                                 free(p );
                                                 p = NULL ;
                                }
                }
                 void operator=(Test &C2)
                {
                                 if (p !=NULL)
                                {
                                                 free(p );
                                                 p = NULL ;
                                } 
                //这里很重要,A=B时,A本身已经malloc了一块内存,如果此时没有              
                  free,直接执行下面一句让p指向另一块内存,那么之前malloc出来的     
                  内存如何释放?
                                 p = (char *)malloc( sizeof(char ));
                                           *p = *C2.p;
                }
private:
                 char *p ;
};
void main ()
{
                 Test A ;
                 Test B ;
                 A = B ; //这里要注意,直接“=”的情况下不会调用拷贝构造函数,要用=重载来避免浅拷贝
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Android中内存泄露与如何有效避免OOM总结

Android系统为每个应用程序分配的内存有限,当一个应用中产生的内存泄漏比较多时,就难免会导致应用所需要的内存超过这个系统分配的内存限额,这就造成了内存溢出而导致应用Crash。内存泄露的危害:只有...
  • gjnm820
  • gjnm820
  • 2016年06月03日 15:09
  • 4219

防止Java内存泄露的一些小细节

今天面试时面试官问了Java内存泄露的一些处理方式,我竟然一时答不上来,回家之后百度查询了一下,结果如下: 1、尽早释放无用对象的引用。特别是大对象和集合对象,通过置为NULL,暗示垃圾收集器来...
  • knighttools
  • knighttools
  • 2015年03月25日 23:51
  • 1609

Android应用内存泄露分析以及优化方案

文章转载http://blog.csdn.net/Soiol/article/details/52486871 第一次写博客,有点小激动,写得好,点个赞表扬一下,写的不好,点个赞鼓励一下。   ...
  • Rayht
  • Rayht
  • 2017年01月01日 20:30
  • 174

内存溢出和内存泄漏的区别和如何避免内存溢出

内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。 ...
  • ch1406285246
  • ch1406285246
  • 2017年03月12日 15:52
  • 604

内存泄漏以及常见的解决方法

之所以撰写这篇文章是因为前段时间花费了很大的精力在已经成熟的代码上再去处理memory leak问题。写此的目的是希望我们应该养成良好的编码习惯,尽可能的避免这样的问题,因为当你对着一大片的代码再去处...
  • lixingying567
  • lixingying567
  • 2015年06月13日 11:18
  • 6968

c++避免内存泄漏

在c/c++语言对于程序内存的管理不像java语言一样有自己的垃圾回收机制,而c/c++却要程序员手动的释放用关键字new或者 malloc系统函数申请的内存空间,然而由于程序员的疏忽可能会忘记去手动...
  • yes_I_am
  • yes_I_am
  • 2016年04月18日 22:09
  • 825

C++内存泄露注意点

本文参考点这里,大部分内容还是一样的,一些地方加上了自己的理解,因为文字是自己边看边写的,所以作为原创了,大家可以看看原博文对比。1.在类的构造函数和析构函数中没有匹配地调用new和delete函数两...
  • tingyun_say
  • tingyun_say
  • 2016年08月26日 11:11
  • 719

解决内存泄露问题的改良版MVP模式

解决内存泄露问题的改良版MVP模式,防止Presenter一直持有Activity对象,使得Activity不能被回收,由此发生内存泄露...
  • eric_niezhangyu
  • eric_niezhangyu
  • 2016年09月07日 00:24
  • 1832

c++内存泄露机制

转自:http://blog.csdn.net/zcsylj/article/details/6409490 对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术...
  • u012723995
  • u012723995
  • 2015年05月05日 16:47
  • 782

4类 JavaScript 内存泄漏及如何避免

本文将探索常见的客户端 JavaScript 内存泄漏,以及如何使用 Chrome 开发工具发现问题。 简介 内存泄漏是每个开发者最终都要面对的问题,它是许多问题的根源:反应迟缓,崩溃,高...
  • u012125579
  • u012125579
  • 2016年05月28日 14:14
  • 1133
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:operator= 要注意避免内存泄露(项目经验)
举报原因:
原因补充:

(最多只允许输入30个字)