Const原子变量上的访问冲突

时间:2015-07-31 10:00:53

标签: c++ visual-studio-2010 c++11 visual-c++

在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;
}

0 个答案:

没有答案