C++语言、STL、标准C++库,相比之C语言及C运行时库(CRT)而言,更加现代、也更加健壮。正因为软件的安全性与健壮性息息相关,所以在安全性方面,标准C++比C及CRT面临的问题更少,那也就不足为奇了。然而,在标准C++中,仍存在一些漏洞,而且,Visual C++ 2005中的一项新增功能,使这个所谓的“循环漏洞”更加轻易被忽视。
受检查迭代子适用于大多数STL容器类中的[ ]操作符,front和back方法;正因为算法在STL中扮演了一个重要的角色,所以与受检迭代子进行集成,无疑对它们来说显得至关重要。而在Microsoft安全部署中,最重要的一点就是,编译器要在默认情况下打开安全选项,这也是受检迭代子与STL算法中这些迭代子的使用情况。对一个使用了受检迭代子的程序而言,所有对标准算法函数的调用,都会导致一个安全函数被调用,这意味着,假如调用一个std::merge,将会转发至stdext::checked_merge。而在STL算法中,这些加有checked_ 前缀的版本防止了未受检的迭代子,当使用第三方且是未用Visual C++ 2005重新编译过的的组件时,就可以捕捉到这些未受检迭代子了,任何试图传递一个未受检迭代子到受检算法中的代码,都不会通过编译。