gaoxiang12 / slambook2

edition 2 of the slambook
MIT License
5.39k stars 2k forks source link

修复 ch3 `examples/plotTrajectory.cpp` vector越界访问BUG #231

Closed fseasy closed 2 years ago

fseasy commented 2 years ago

在ch3的 examples/plotTrajectory.cpp82 行:

    for (size_t i = 0; i < poses.size(); i++) {
      ...
      auto p1 = poses[i], p2 = poses[i + 1];
      ...
     }

对最后一个元素(i == poses.size() - 1U)迭代,用[i + 1]访问显然越界了,只是因为 []操作符不检查range,且恰巧内存正常,所以程序没有崩溃。 对此,稍微修改了一点点,避免越界。

PS: 斗胆说下,一般建议用 .at(idx) 来做vector的访问,其显式做out_of_range的检查,可以避免很多因为越界访问导致的core-dump. 这里未做修改,保持代码风格一致。

fseasy commented 2 years ago

才发现 https://github.com/gaoxiang12/slambook2/pull/113 已经有此提交。 关闭了。