力扣BFS报错Heap-use-after-free解决方案

最近在刷网格图dfs和bfs的题。之前都没有加引用的习惯,前段时间做一道dfs,做完了和题解思路一致,但却频频超时,查了十几分钟,最后发现是四向方向数组少了个引用,加上后马上通过了……可想而知,如今能引用几乎都尽可能带上了。

然而今天这个问题又刚好是滥用引用导致的。

具体报错:

af3c7cd2b19645a997f16ee050649992.png

 报错代码:

6ec1344a2a404849b00e2376c90e046d.png

报错原因 

使用引用(&)将变量dis, r, c都指向了q.front()本身。而当q.front()被pop之后,在堆中的内存释放,使得该内存在被分配之前无法再次调用。dis, r, c此时指向了被释放后的内存,故产生报错heap-use-after-free 释放堆内存被使用

将引用去掉后,dis, r, c 将会把q.front()中的值copy一份,即便之后q.front()被pop,dis,r,c作为副本,也仍然可以正常调用~

参考

【关于LC的heap-use-after-free问题 - CSDN App】https://blog.csdn.net/qq_39255924/article/details/123037669?sharetype=blog&shareId=123037669&sharerefer=APP&sharesource=threedoves&sharefrom=link

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值