您的位置:首页 > 编程语言 > C语言/C++

c++一般指针的深层复制和浅层复制(1)

2011-09-10 12:54 232 查看
如下:

int* first;

int second;

first = new int[5];

second = first;

此时,first和second指针指向同一个地址,都指向first所在的地址;

如果此时执行如下语句,

delete [] second;

那么first和second所指向的数组被删除(因为共用一个地址),

若再执行,

delete []first;

那么程序会因访问错误地址而终止,因为此时first所指向的地址无效了。

要避免这种情况,可以重新申请一个内存空间,如:

second = new [5];

此时first和second 分别指向不同的数组,任意一个数组被删除都不会影响另一个数组。

这就是浅层复制和深层复制的区别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: