C++为何会出现深浅拷贝问题(引出对JAVA内存机制的思考?)

3 篇文章 0 订阅

C++为何会出现深浅拷贝问题(引出对JAVA内存机制的思考?)



一、首先说一下为什么会出现深浅拷贝的问题?

所谓拷贝就是平常意义的复制,至于深浅,就因为一个东西:指针!

指针拷贝的时候,如果有指针,那么也就是对指针的拷贝,指针怎么拷贝?

指针本质也就是一个存储地址的整型,所以拷贝的时候,也就是把指针本身进行复制,这样就导致一个问题:本体与复制体的指针成员实际是一个值(地址值),那么他们会操作同一个地址的内存内容,在析构的时候,就出现问题了,本体或者复制体进行析构的时候,将指针成员kill了,即把指针成员对应的地址内容kill掉了,

那么另外一个复制体或者本体的指针成员怎么办????

野指针啊! 就因为这个原因,为了让程序猿对这个问题加深认知,就出现了两个名词:深拷贝浅拷贝!实际并没有什么深拷贝和浅拷贝,出现这两个词的原因也就是为了让你随时记住指针问题!万恶的指针!如果你对指针有着极其深刻的认知,随时能注意指针的动向,那么深拷贝、浅拷贝?忽悠小孩子的啦~



二、在java的对象赋值时,传递的是地址,这也就导致了我们改变复制对象的值时,源数据的值也会跟着改变。

参考:https://www.zhihu.com/question/36370072/answer/1241929986

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值