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

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