Closed fseasy closed 2 years ago
在ch3的 examples/plotTrajectory.cpp 的 82 行:
examples/plotTrajectory.cpp
for (size_t i = 0; i < poses.size(); i++) { ... auto p1 = poses[i], p2 = poses[i + 1]; ... }
对最后一个元素(i == poses.size() - 1U)迭代,用[i + 1]访问显然越界了,只是因为 []操作符不检查range,且恰巧内存正常,所以程序没有崩溃。 对此,稍微修改了一点点,避免越界。
[i + 1]
[]
PS: 斗胆说下,一般建议用 .at(idx) 来做vector的访问,其显式做out_of_range的检查,可以避免很多因为越界访问导致的core-dump. 这里未做修改,保持代码风格一致。
.at(idx)
out_of_range
才发现 https://github.com/gaoxiang12/slambook2/pull/113 已经有此提交。 关闭了。
在ch3的
examples/plotTrajectory.cpp
的 82 行:对最后一个元素(i == poses.size() - 1U)迭代,用
[i + 1]
访问显然越界了,只是因为[]
操作符不检查range,且恰巧内存正常,所以程序没有崩溃。 对此,稍微修改了一点点,避免越界。