最近遇到好多debug编译可以运行,release编译运行崩溃的问题。
多与优化有关。可以通过关闭release的优化来验证是否与优化有关。
如果发生错误,多数是优化时的命名返回值优化产生的问题,这样的优化会导致程序在优化与未优化之间的不同行为
http://blog.csdn.net/xinqingwuji/article/details/78802683
下面是vs的优化选项说明:
/O 选项控制有助于创建具有最高速度或最小大小的代码的各种优化。
/O1 为获得最小大小而优化代码。
/O2 为获得最高速度而优化代码。
/Ob 控制内联函数展开。
/Od 禁用优化,从而加快编译并简化调试。
/Og 启用全局优化。
/Oi 为适当的函数调用生成内部函数。
/Os 通知编译器优选大小优化而非速度优化。
/Ot(默认设置)通知编译器优选速度优化而非大小优化。
/Ox 选择完全优化。
/Oy 取消在调用堆栈上创建框架指针,以更快地进行函数调用。
备注
--------------------------------------------------------------------------------
还可以将多个 /O 选项组合到一个选项语句。 例如,/Odi 与 /Od /Oi 是相同的。