可能重复:
GCC STL bound checking
g ++ STL中是否存在std:vector的自动调试版本,如果不是,我怎么能实现?
我想要的是在我的g ++调用中指定一个调试参数,例如:
g++ -D DEBUG_ main.cpp
当定义了这个参数时,我希望我的所有std :: vectors在访问元素时检查它们的边界,这是使用vector :: at()时的方式。
当省略参数时,我希望所有向量的行为都像使用普通[]运算符一样,这意味着边界检查没有“浪费”性能。
我听说VC ++就是这样做的。所以我的问题是如何使用g ++?
答案 0 :(得分:7)
您想要的旗帜是-D_GLIBCXX_DEBUG
可以在以下位置找到libstdc ++的更多调试选项:
http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode_using.html#debug_mode.using.mode
答案 1 :(得分:0)
在调试模式下,您可以进行其他断言和检查,但使用at()
或[]
它始终在您身边。
at()
- 抛出out_of_bounds异常,[]
- 不要