nwd0729的专栏

不去在乎结果,一如既往的努力,也没什么不好。

operator= 要注意避免内存泄露(项目经验)
指针不论是指向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 ; //这里要注意,直接“=”的情况下不会调用拷贝构造函数,要用=重载来避免浅拷贝
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nwd0729/article/details/46805999
文章标签: 内存泄露 经验 c++
个人分类: C++学习 项目经验
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭