gpt4 book ai didi

c++ - 仅在 x64 版本中存在访问冲突

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:47:00 24 4
gpt4 key购买 nike

我在非常奇怪的情况下使用 <random> 遇到访问冲突 header 。这是编译器错误吗?这是代码:

#include <random>

class Foo {
public:
std::random_device rd;
std::mt19937_64 mt;
std::uniform_int_distribution<int> dist;

Foo();
};

Foo::Foo() : mt(rd()) {
dist = std::uniform_int_distribution<int>(0, 1);
}

int main() {
Foo foo;

int a[2];

int b[2] = { 0 };

for (int i = 0; i < 2; i++) {
int c = foo.dist(foo.mt);
a[0] = b[c];
b[c] = b[0];
}
}

如果我将 for 循环替换为以下内容,代码将不会发生访问冲突!

{
int c = foo.dist(foo.mt);
a[0] = b[c];
b[c] = b[0];
}

{
int c = foo.dist(foo.mt);
a[0] = b[c];
b[c] = b[0];
}

这仅适用于版本 x64,我从一个“空项目”开始。对我来说,这似乎是一个错误。我错过了什么吗?

最佳答案

这是优化器的一个错误,它将用于有符号整数的模式应用于无符号整数。

我报告了这个错误,Microsoft 的 David Hartglass 回复了 here .目前正在处理该错误。

关于c++ - 仅在 x64 版本中存在访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57294566/

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