mrpt 的深刻教训

话不多说,先上错误显示:

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted

是不是有点熟悉的味道?熟悉的气息?

为了这个错误调试了挺久的,快把人逼疯了,这个问题出现在调用COccupancyGridMap2D或者CObservationRange的insertObservation成员函数,一开始就怀疑是其他程序限制了内存分配,或者是函数指针参数传入等等其他问题,就是没有怀疑自己用法的问题,最后才发现原因是:

在调用insertObservation成员函数的时候,mrpt会根据你的地图分辨率自动分配相应的栅格,而我传入的座标值是以毫米为单位,而mrpt的地图一般都是米为单位,这就是问题的关键,导致mrpt分配的地图过于庞大,导致arm板的内存无法满足,从而导致内存分配不足。细节!!!!细节!!!!

过年了,又发现并解决了一个bug,真开心!坚持上班到12号,真开心!o(╥﹏╥)o

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章