gpt4 book ai didi

c++ - 适用于调试但不适用于发布

转载 作者:太空狗 更新时间:2023-10-29 23:22:38 25 4
gpt4 key购买 nike

我有一个线程,它在完成时将一个值设置为 true。在那之前我等待:

while(1)
{
if(done[0] == true)
{

break;
}
}

这段代码在 Debug 中工作得很好,但在 Release 中它永远停留在循环中,即使调试器清楚地表明它是 true 而不是 false。

为什么这行不通?

谢谢

最佳答案

这是未将 done 标记为 volatile 的症状。

如果没有 volatile,优化编译器可以将值缓存在寄存器中。

例如

private volatile int i;

关于c++ - 适用于调试但不适用于发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2954815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com