深浅拷贝

2021-03-27

查阅资料后,编个例子通俗的讲讲我理解的深浅拷贝:

浅拷贝:

如果我们把内存比作一整个小区,在内存中开辟一块地方存入数据相当于在小区内盖了一栋楼并且往楼里面加入住户。假设这栋楼包括楼里的所有住户都属于我,此时有一个人(叫他2号吧)看上了我楼里的所有住户,想借去为他劳动,那他怎么找到我楼里的这些住户呢?很简单,只要我告诉他我的那栋楼的地址,那么他就可以根据我给他的地址,找到我的住户并且拿去使用。我们可以简单的把指针理解为地址,2号拥有了我的地址和住户,也就是说,他复制了我的指针和指针所指向的内存中的数据。如果他过渡使用我的住户,导致我的住户有几个累死了,那么我会受到影响,因为我损失了我的住户(此处言语不当,大家主要理解意思)。所以,浅拷贝中,你修改数据,本体是会改变的,是会受影响的,因为共同使用着同一内存中的数据。

所以,浅拷贝就是复制了指针,调用了指针所指向的内存里的数据。但是并没有在整个内存中重新开辟一个地方存数据。本体和复制体共用,一个改变另一个也随之改变。

深拷贝:

假设另一个人(3号),不仅看上了楼里所有住户,还看上了我这栋楼。然后3号在小区里开辟了一块地,盖了一栋跟我的楼一模一样的楼并且复制了我楼里所有的住户。当3号过渡使用复制出来的住户,虽然导致住户累死,但是我是不受影响的,因为我的住户总数量没有改变,只是他复制出来的住户数量改变。

所以,深拷贝就是在内存中重新开辟一块地方存入复制的数据,有新的指针和新的内存区域。本体和复制体的不共用,互不影响。


本文为一个前端初学者的理解,言语和例子多有不当,仅辅助本人当下理解。读者适当参考。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容