(堆)关于两个指针同时指向同一块内存空间的错误思维

现在有两个指针,他们分别指向“堆”上的不同的内存空间(不是栈);

假设有两个指针*p1,*p2;

现在想要将*p2的内容拷贝到*p1中;

p1=p2   //如果是栈上可以直接赋值,因为内存泄漏跟野指针不用考虑

显然在栈上,由于不存在内存泄漏跟野指针的情况,无需置空,它能自动释放;

但如果在堆上,很明显的就是它俩会出现问题

*内存泄漏

最开始,指针*p1的指向的那片内存空间 ,无从知道它的地址,没法访问,也无法释放,因为指针已经改变了指向,地图没有显示那片内存空间,剩下的那块空地,谁也不知道它在哪;

*野指针

当*p1指向了*p2,那么释放这片内存空间的时候,总会有一个无法或者忘记置空(编译器无法识别),以至于很容易遗漏,造成不可挽回的局面;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值