深浅拷贝到底是什么呢
浅拷贝:所谓的浅拷贝就是拷贝指向对象的指针(拷贝出来的目标对象的指针和源对象的指针指向的内存空间是同一块空间)。
浅拷贝只是一种简单的拷贝,让几个对象公用一个内存,然而当内存销毁的时候,指向这个内存空间的所有指针需要重新定义,不然会造成野指针错误
深拷贝:所谓的深拷贝指拷贝对象的具体内容,其内容地址是自助分配的,拷贝结束之后,内存中的值是完全相同的,但是内存地址是不一样的,两个对象之间相互不影响,也互不干涉.
我们来总结一下两者之间的原理 : 如果现在有一个A对象,拷贝之后得到一份新的对象A_Copy。
如果是浅拷贝,那么A对象和A_Copy对象指向的就是同一个内存的资源,它拷贝的只是一个指针而已,对象的内容并没有拷贝.也就是说对象的资源还是只有一份.如果这个时候我们对A_copy对象进行修改操作,那么A对象的内容同样会被修改.
如果是深拷贝,拷贝的不仅仅是指针,还有内容,拷贝的对象B_Copy会自助分配内存,两个对象的指针指向的是不同的内存空间,因为A对象和B_Copy对象的内存地址是不一样的,所以,如果我们对B_Copy进行修改操作的话是不会影响到A对象,它们之间是互不干涉的
总结:
浅拷贝就想是您和您的影子之间的关系 : 你挂了, 你的影子也跟着挂了
深拷贝就像是您的克隆人, 你挂啦, 可你的克隆人还活着
深浅拷贝到底是什么呢相关推荐
- python基础(三元运算+深浅拷贝+函数参数)
三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 1 书写格式: 2 result = 值1 if 条件 else 值2 3 即如果条件成立,则将值1赋给result ...
- 是时候捋一捋Java的深浅拷贝了
在开发.刷题.面试中,我们可能会遇到将一个对象的属性赋值到另一个对象的情况,这种情况就叫做拷贝.拷贝与Java内存结构息息相关,搞懂Java深浅拷贝是很必要的! 在对象的拷贝中,很多初学者可能搞不清到 ...
- 21天学通python电子版-小数据池,深浅拷贝,集合+菜中菜
小数据池,不同代码块的缓存机制,也称为小整数缓存机制,或者称为驻留机制等等,博主认为,只要你在网上查到的这些名字其实说的都是一个意思,叫什么因人而异. 那么到底什么是小数据池?他有什么作用呢? 前提条 ...
- 5张图搞懂Java深浅拷贝
微信搜一搜 「bigsai」 关注这个专注于Java和数据结构与算法的铁铁 文章收录在github/bigsai-algorithm 欢迎star收藏 如果本篇对你有帮助,记得点赞收藏哦! 在开发.刷 ...
- 【python】深浅拷贝
在python中一切都是对象 print(type(1))print(type("Hello World"))print(type(["A","B&q ...
- 9012年,当我们讨论js深浅拷贝时我们在说些什么?
前言: 本文主要阅读对象:对深浅拷贝印象模糊对初级前端,想对js深浅拷贝聊一聊的中级前端.如果是对这些有完整对认知体系和解决方法的大佬,可以选择略过. 复制代码 正文: 讨论深浅拷贝,首先要从js的基 ...
- python——赋值与深浅拷贝
结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一--python的变量及其存储 在详细的了解python中赋值.copy和deepcopy之前,我们还是要花一点时间来 ...
- python之深浅拷贝
对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy # ######### 数字.字符串 ######### n1 = 123 # n1 ...
- Java中深浅拷贝之List
List的浅拷贝 浅拷贝将引用复制.指向的是同一个地址,改变A和B中的任何一个,另一个都会随之发生变化. List浅拷贝(针对List里 装的是对象-----"引用"[基础类型不分 ...
最新文章
- linux shell 特殊变量 符号 $0, $#, $*, $@, $?, $$ 命令行参数
- 【python】nuitka封装python
- VBS转化为exe可执行文件实例演示,vbs转exe工具推荐
- yum与rpm的详解 --用来安装软件
- reactjs定义组件:类式组件
- 人工智能AI实战100讲(一)-机器人语义建图(下)
- 2个表 遍历 组合_分享一个python脚本--数字随机组合有多少
- 【本人秃顶程序员】Java程序员成长三部曲!
- 华为助力“沙漠奇迹”成为高密互联的高尔夫球场
- 大话FPGA-“万能的芯片?”
- Mobile-Former: Bridging MobileNet and Transformer详解
- 【转】Knowledge-Distillation 知识蒸馏论文集合
- 15款用Unity开发iOS、安卓手机游戏的必备插件
- c++ 字符串分割和数字格式化输出
- 破竹课堂-老A的杠杆术
- 深度学习去燥学习编码_您不应该学习编码的5个理由
- Windows安装VMware(Linux系统)
- 为ppt添加页码进度条
- # Logistics Regression
- sqoop使用hcatalog抽取数据异常