返回顶部

C++深拷贝与浅拷贝区别

浅拷贝只是对指针的拷贝,拷贝后两个指针指向同一个内存空间

深拷贝不仅对指针进行拷贝,而且对指针指向的内容进行拷贝,深拷贝后的指针是指向两个不同地址的指针

 

当对一个已知对象进行拷贝时,编译系统会自动调用一种构造函数——拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数。

当拷贝一个基类指针到派生类时,如果调用系统默认的拷贝构造函数,这时只是对指针进行拷贝,两个指针指向同一个地址,这就会导致指针被分配了一次内存,但内存被释放了两次(两次调用析构函数),造成程序崩溃。所以在对含有指针成员的对象进行拷贝时,必须要自己定义拷贝构造函数,使拷贝后的对象指针成员有自己的内存空间,即进行深拷贝,这样就避免了内存泄漏发生。

posted @ 2020-10-27 15:43  十方央丶  阅读(2531)  评论(0)    收藏  举报