![]() |
1
2
这看起来像是一个过分热心的优化器。我可以用Visual Studio 2008 SP1、/og和/fa确认您描述的程序集输出行为。这对风投来说不是第一次:试试看 google visual c++ "/Og" site:support.microsoft.com . 解决方法之一是使用xptr指针而不是xptr值进行迭代。这还有一个有益的副作用,就是将每次迭代复制的字节数从8(xptr值)减少到4(xptr指针)。
生成的带有/og的程序集代码现在看起来像这样。作为比较,我无法将程序集精确映射到源代码
考虑到这类bug有多难处理,代码中可能隐藏着类似的问题。对于处理xptr和n_dsc的代码部分,您可能需要考虑不使用/og,或者在四周进行单元测试。 |
![]() |
2
0
也许您应该尝试将“p”设置为易失性:
这应该会阻止乐观主义者避免进行比较。 |
![]() |
JoeZ · Do while循环不会中断 6 年前 |
![]() |
JoeZ · 如果循环不工作。运行时显示重复cout。 6 年前 |
![]() |
Joe · 正在展开宏以进行调试? 6 年前 |
|
Matthew · 自己编译公共库会提高性能吗? 6 年前 |
![]() |
Barry · 在MSVC中处理宏中的额外括号 6 年前 |