繁体   English   中英

Linux上STL的安全版本

[英]Safe Versions of STL on Linux

C ++标准库-教程和参考,第2版引用了STL的安全版本,该版本支持各种实用程序,例如,对operator []和其他操作符的运行时边界检查。 例如,在p247上:

因此,至少在软件开发期间,使用“安全” STL是一个好主意。 安全STL的第一个版本由Cary Horstmann提出(请参阅[SafeSTL] )。 另一个示例是“ STLport”,几乎可以在[STLPort]的任何平台上免费使用。 此外,库供应商现在提供标记以启用“更安全”模式,尤其是在开发过程中应启用该模式。

这两个建议的软件包似乎都比较过时(最新开发于2008年),并且不包含最新的C ++ 11/14功能。 在Linux上的某些主要编译器( gccclang )或作为独立库,是否有其他可用的较著名的实现?

libstdc ++具有调试模式 ,可以通过在编译时定义_GLIBCXX_DEBUG来启用。

libstdc ++调试模式执行C ++标准的许多方面的检查,但重点是检查标准迭代器,容器和算法之间的交互,包括:

  • 安全的迭代器 :迭代器会跟踪其引用其元素的容器,因此会立即诊断出诸如递增过去的迭代器或取消引用指向已被破坏的容器的迭代器之类的错误。

  • 算法前提条件 :算法尝试验证其输入参数,以尽早发现错误。 例如, set_intersection算法要求其迭代器参数first1last1形成有效的迭代器范围,并根据传递给set_intersection的相同谓词对序列[first1, last1)进行排序。 如果序列未排序或由其他谓词排序,则libstdc ++调试模式将检测到错误。

包含operator[]边界检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM