c ++ std :: sort intel编译器错误:访问冲突

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c ++ std :: sort intel编译器错误:访问冲突相关的知识,希望对你有一定的参考价值。

为什么这个简单的c ++代码片段无法编译?

#include <algorithm>
#define SIZE (1000)

struct S {
   int *vect;
};

int main() {

    struct S* s = static_cast<struct S*>(malloc(sizeof(struct S)));

    s->vect = static_cast<int*>(malloc(sizeof(int) * SIZE));

    for(int i = 0; i < SIZE; i++) {
       s->vect[i] = i;
    }

    std::sort(s->vect, s->vect + SIZE);

}

编译器返回与std :: sort调用相关的以下错误

1>C:Program Files (x86)Microsoft Visual 
Studio2017EnterpriseVCToolsMSVC14.12.25827includealgorithm(3138): 
error : access violation
1>              return (pair<_RanIt, _RanIt>(_Pfirst, _Plast));
1>                      ^

我正在使用visual studio enterprise 2017版本15.5.2和intel编译器64位版本17.0.4.210 Build 20170411。

使用默认的visual studio编译器成功编译代码。

无法找出我做错了什么。

答案

我发现不幸的是,视觉工作室更新15.5.x打破了英特尔编译器2017,可以在intel forum中看到我问同样的问题。希望它对其他人也有用。

以上是关于c ++ std :: sort intel编译器错误:访问冲突的主要内容,如果未能解决你的问题,请参考以下文章

我的C/C++语言学习进阶之旅解决使用algorithm库里面的sort函数的时候,编译报错:未能使函数模板“unknown-type std::less<void>::operator ()(代码片

使用不带前缀“std”且不带“using namespace std;”的 std::sort()编译成功

为啥将 std::sort 与自定义比较器一起使用无法编译?

solaris (libCstd) 上的 std::sort 问题

c++sort函数“std::_Debug_range2”: 2 个重载中没有一个可以转换所有参数类型 错误

std::sort 对 c 风格的字符串进行排序,而不复制字符串 [重复]