在Visual Studio 2012中执行以下c ++代码时,会生成以下错误:访问冲突写入位置0xADDRESS。如果变量“alwaysFalse”是非const,则此“应用程序”将编译并执行而不会出现问题。我不明白为什么当它是const时会导致运行时访问冲突?这不是构造函数的问题,因为它使用和不使用const编译得很好。只有当它是const时才会发生错误;使用非const应用程序代码将完全按预期工作。
#include <atomic>
#include <iostream>
namespace
{
const std::atomic_bool alwaysFalse = ATOMIC_VAR_INIT(false);
}
int main(int argc, char* argv[])
{
if (alwaysFalse)
std::cout << "It's true" << std::endl;
else
std::cout << "It's false" << std::endl;
return 0;
}