使用MinGW检查Debug和Release中的STL边界

时间:2015-07-23 14:43:23

标签: c++ stl indexoutofboundsexception bounds-checker

我正在从事一个项目(定居者2.5回归根源),这会遇到一些问题。我希望能够通过仅使用stl容器和边界检查来解决其中一些问题。

那么在发布模式下是否可以在STL容器中使用边界检查?所以我们可以使用(执行性较差)版本,它们会出错并崩溃/抛出错误?

构建服务器使用MinGW从linux交叉编译到windows和apple。

编辑:[] -operator是专门使用的。更改为.at()将需要一个大的搜索和替换操作,在某些时候必须反转。如果有一个定义或某些东西将[] -behaviour切换为.at()

,那将是最好的

1 个答案:

答案 0 :(得分:1)

第一种方法

您可以依赖异常来验证使用STL容器的绑定检查。这在调试和释放模式下均可启用。

例如,如果超出范围,std::vector::at会抛出超出范围的异常。

第二种方法

如果您使用operator []并且您不想更改代码,则可以启用_GLIBCXX_DEBUG标志以进行绑定检查。