`
kofsky
  • 浏览: 196949 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

深拷贝与浅拷贝

阅读更多

 编写一个用于数值计算的向量
通过普通的数组来存储数据
其中一个构造函数如下:

/************************************************************************/
/*   构造函数:根据 数组 与 数组的长度 构造向量         */
/************************************************************************/
IVector::IVector( 
double *_data, const int _size )
{
      
this->_data = _data;
      
this->_size = _size;
}

如下代码的执行操作部分是没问题的:

{      // 注意:问题的关键在于,这两个对象是由同一个数组构造的
       IVector vector1( array2, _size );
       IVector vector2( array2,_size );
       
//操作
}

但当 离开这段代码 ,也就是运行到代码片断的" } " 时,就出现问题了。挂了。

当定位了错误的位置,查看了析构函数后,很快就确定了错误的原因:浅拷贝。

浅拷贝:实现简单、空间效率略高,但潜在错误多

深拷贝:实现略麻烦些、内存耗费大、可以消除许多潜在错误

 

c++ 的内存管理确是一件头疼的事件

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics