深拷贝和浅拷贝的区别?如果要delete一个浅拷贝,需要注意什么条件?
2014-11-24 18:10
459 查看
现在有一个指针p1指向了一个内存空间m1;
浅拷贝就是再用一个新的指针p2指向这片内存空间m1;
深拷贝就是用一个新的指针p3指向m1的副本m2
delete一个浅拷贝,首先要确定是不是有其它的指针还在指向这片空间。不然,其他指向这片空间的指针直接就是野指针了。为什么野指针那么是绝对要禁止的?野指针现在指向了一片内存区间,这片内存区间以前是有意义的,现在被释放了,操作系统可能会讲这边区间放上其它程序数据。那么,野指针仍然指向了这片区间。如果此时使用野指针,改变了这片内存的数据,那么程序应该直接崩溃。而且,这样子的崩溃可能出现,可能等一会儿出现,不定。带来的bug很难查找。
浅拷贝就是再用一个新的指针p2指向这片内存空间m1;
深拷贝就是用一个新的指针p3指向m1的副本m2
delete一个浅拷贝,首先要确定是不是有其它的指针还在指向这片空间。不然,其他指向这片空间的指针直接就是野指针了。为什么野指针那么是绝对要禁止的?野指针现在指向了一片内存区间,这片内存区间以前是有意义的,现在被释放了,操作系统可能会讲这边区间放上其它程序数据。那么,野指针仍然指向了这片区间。如果此时使用野指针,改变了这片内存的数据,那么程序应该直接崩溃。而且,这样子的崩溃可能出现,可能等一会儿出现,不定。带来的bug很难查找。
相关文章推荐
- python 赋值的时候是引用,如果需要复制则需要注意深拷贝和浅拷贝的区别
- Kooboo中如何切换数据库(注意:如果切换数据库,需要Kooboo中没有一个website 否则会报错数据库中没有表之类的)
- (转)在.NET程序运行过程中,什么是堆,什么是栈?什么情况下会在堆(栈)上分配数据?它们有性能上的区别吗?“结构”对象可能分配在堆上吗?什么情况下会发生,有什么需要注意的吗?
- Hibernate 先get 一个实体数据,在修改数据,为新的数据,再add到数据库,需要注意什么?
- Linux -->在目录内创建文件、显示文件以及拷贝文件到一个目录都需要什么权限?
- 小数运算需要注意什么? 接口和抽象类 WinForm窗体上两个panel,怎么实现一个panel固定漂浮在另一个panel之上
- 一个老站的改版需要注意什么
- 建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内 如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程。应该尽量在循环当中对异常发生的一
- listview一个需要注意的地方(想不到叫什么标题了)
- 自己写一个BLOG程序需要注意什么
- jquery中$('form').submit()和$("form").submit()有什么区别?注意一个是双引号,一个是单引号
- Scanner扫描器中如果先获取一个int再获取一个String会出现什么错误以及next()和nextLine()的区别
- 策划一个企业网站需要注意什么?
- 购买一个虚拟主机你需要注意什么
- 如果一个页面中用了两个以上displaytag,需要注意的分页问题
- client和server,如果server的port number已经确定,两者之间最大的TCP连接数是多少?工程上有什么需要注意的(2)
- client和server,如果server的port number已经确定,两者之间最大的TCP连接数是多少?工程上有什么需要注意的(1)
- SharePoint服务器如果需要安装杀毒软件, 需要注意什么?
- js函数写法一个需要注意的问题(如果不需要做js压缩优化则可以不用注意)
- Tip:判断条件与数据库相关时,需要注意什么。要尊重字段原本的意义