为了账号安全,请及时绑定邮箱和手机立即绑定

即使用浅拷贝把同一段内存清理了2次,也不会出现视频中的那种无响应情况的,有没有?

即使用浅拷贝把同一段内存清理了2次,也不会出现视频中的那种无响应情况的,有没有?是操作系统阻止了那样的错误么?

Array is created: m_iCount = 20 // 实例化

Copy constructor is running: m_iCount = 20 //实例化2

Array is being deleted: m_iCount = 20 

m_pArr is being deleted: 0x681190 //第一次

Array is being deleted: m_iCount = 20

m_pArr is being deleted: 0x681190 //第二次


Process returned 0 (0x0)   execution time : 0.053 s

Press any key to continue.


正在回答

4 回答

http://img1.sycdn.imooc.com//580d6b5200016edc04060242.jpg至于楼主的问题,我还是第一次遇到,严格来说是不会出现清理两次内存的情况

0 回复 有任何疑惑可以回复我~
#1

bc201 提问者

我还真的比你多执行了一次delete操作;
2016-10-24 回复 有任何疑惑可以回复我~
#2

bc201 提问者

非常感谢!
2016-10-24 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//580d7e280001caa306640344.jpg

再来,这样子还是可以过的。

0 回复 有任何疑惑可以回复我~
#1

LingDu丶

删除内部判断你传入的是 nullptr 就直接return 另外 ,浅拷贝出错的是 析构函数重复delete成员指针 两次delete没出问题是也是正常的,因为delete一个被销毁的内存是未定义行为 未定义行为执行结果随意 什么都行 以上答复来自于社区小伙伴.......
2016-10-24 回复 有任何疑惑可以回复我~
#2

bc201 提问者 回复 LingDu丶

THANKS
2016-10-24 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//580d7d00000171a508270347.jpg

真的可以呢。

但是如果再执行了注释掉的代码的话,就会出错了。


0 回复 有任何疑惑可以回复我~

一般都不会清理同一段内存两次

0 回复 有任何疑惑可以回复我~
#1

bc201 提问者

看到课程中说到这儿了特意用的浅拷贝把这一段堆内存清理了两次。但是还是运行通过了。是编译器容错性更强了么,还是操作系统本身在这方面处理得更到位一些呢,感觉有点好奇。
2016-10-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

即使用浅拷贝把同一段内存清理了2次,也不会出现视频中的那种无响应情况的,有没有?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信