- 博客(9)
- 收藏
- 关注
原创 算法基础-数组
特别的,如果mid还是使用(left + right)/2可能会存在left=0, right=1,mid等于0的情况,然后left=mid就一直无法更新边界退出循环了,可以使用上取整技巧规避,即mid = (left + right + 1) / 2;由于存在right=mid,退出条件必须是left < right,不然可能会死循环(考虑left=1,right=1的情况)由于存在left=mid,退出条件必须是left < right,不然可能会死循环(考虑left=0, right=0的情况)
2024-11-27 21:05:56
1746
原创 STL容器并发不安全导致的double free
众所周知,C++的STL里提供的map容器不能保证线程安全,项目因此给map加了一个锁,封装了一个线程安全的map,如下所示这里的读写锁是全局资源,通过封装RAII类,在构造函数内实现读或写保护,析构函数内实现解锁,就不用担心锁忘记释放,看起来也更简洁【参见Effective C++条款13以对象管理资源】
2024-03-29 11:20:35
923
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人