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

来源:互联网 发布:高校学生qq数据 编辑:程序博客网 时间:2024/05/18 01:03

如下:

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 分别指向不同的数组,任意一个数组被删除都不会影响另一个数组。


这就是浅层复制和深层复制的区别。

原创粉丝点击