什么是Visual Studio中的安全开发生命周期检查选项?

Nei*_*irk 77 c++ sdlc visual-studio

我正在使用Visual Studio 2013 Preview,虽然我确信我已经在早期版本中看到过它.使用向导创建新项目时,我选择C++,Win32控制台应用程序,并且有一个选项可以在我的项目上启用安全开发生命周期检查.有人可以解释这个选项对我的代码/项目的确切作用吗?

MSa*_*ers 70

所述/sdl开关被描述在这里.它会将一些警告转换为错误,这不会影响您的代码.此外,它/GS更加积极地应用检查.

不要期望太多.Microsoft SDL实际上是1980年代C风格编程的一种解决方法.即使你使用20世纪的C++,你也不需要它.例如operator+(std::string, std::string)既安全又便携.相比之下,微软的SDL解决方案不可移植,也不安全 - 背后的想法/GS是在运行时查找C字符串处理错误并中止程序,限制后果但不安全.

  • 执行有限的指针清理.在不涉及解除引用的表达式中以及没有用户定义的析构函数的类型中,在调用delete之后,指针引用被设置为无效地址.这有助于防止重用过时的指针引用.执行类成员初始化.在对象实例化时(在构造函数运行之前)自动将所有类成员初始化为零.这有助于防止使用与构造函数未显式初始化的类成员关联的未初始化数据. (3认同)
  • @ahmd0 我讨厌微软定期废弃链接的方式。我必须去https://web.archive.org/web/20150703000343/http://blogs.microsoft.com/cybertrust/2011/12/02/compiler-security-enhancements-in-visual-studio-11 / 查看答案中给出的链接。 (2认同)