2020-05-08
内存泄漏问题
- 内存泄漏问题的直接原因是因为new 了野指针之后没有delet
- 在update current position之后 map kit 调用了prepareGuidanceData,目的是找到离当前位置最近的guidance data
- prepareGuidanceData调用了NavInfoProviderImpl::getTrafficLights & NavInfoProviderImpl::getCarParks
- 以NavInfoProviderImpl::getTrafficLights为例,是在调用时new出NaviEventOnPath中的数据指针
- 然而并没有delete
- 还发现DestEvent存在这个问题
解决方案:核心在于不允许野指针存在,决定对NaviEventProvider做一个重构
- 首先在NaviInfoProvider中添加两个field trafficlight_events & carpark_events
- 在NaviInfoGenerator中,route updated之后更新这两个field
- 然后在每次get的时候根据当前车辆位置做一个过滤
- 因此要重构
PathReader::getAttributes,原因在于之前的实现只考虑了相对于当前车的offset,现在需要一个相对于Path的Offset接口