0

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

那么是否有可能在发布模式下也可以在 STL 容器中使用边界检查?所以我们可以使用一个(性能较差的)版本,它会导致它们崩溃/抛出错误吗?

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

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

4

1 回答 1

1

第一种方法

您可以依靠异常来验证使用 STL 容器的边界检查。这在调试和发布模式下都启用。

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

第二种方法

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

于 2015-07-23T14:48:44.023 回答