在clang中检查std :: vector(和其他容器)的边界?

Col*_*len 7 clang stdvector

在clang中,有没有办法启用边界检查[]访问std :: vectors和其他STL容器,最好只在调试模式下构建?

我花了好几个小时寻找一个微妙的错误,结果是我们访问了std :: vector的末尾.当它检测到错误时,它不需要做任何聪明的事情,只需在调试器中陷阱,以便我可以找到它发生的位置并在代码中修复它.

除了"创建继承自std :: vector的自己的类型"之外,有没有办法做到这一点,我想避免哪些?

(如果这有所不同,我正在使用clang 3.1版.)

Ben*_*mer 2

#define _GLIBCXX_DEBUG
Run Code Online (Sandbox Code Playgroud)

这可以实现各种内联检查(请参阅向量和调试/向量)

  • `_GLIBCXX_DEBUG` 在 libstdc++ 中工作,而不是在 libc++ 中工作。在libc++上,我相信你可以使用`_LIBCPP_DEBUG2`。将 0 或 1 存储到该值以进行各种级别的调试。 (3认同)