【C++基础】浅拷贝和深拷贝

时间:2021-05-02 19:48:32

简单理解:

  对于一块内存,浅拷贝只是增加了一个指针,这样两个变量都指向这块内存,二深拷贝则是先开辟一块同等大小的新内存区,将待拷贝内存的内容复制过来,再赋予一个指向新内存的指针。区别在于:浅拷贝会造成对新变量产生变动时有可能会操作该变量所指的内存中所存储的内容,那么浅拷贝时改变新指针所指内存值会造成旧指针指向的内存值也随着改变,深拷贝由于新旧指针分别指向不同的内存块,也就不会有这个问题。

  另外,采用深拷贝的情况下,释放内存的时候不会出现在浅拷贝时重复释放同一内存的错误。见C++primer 中文第五版 P448