C STD ::排序Intel编译器错误:访问违规

c++ std::sort intel compiler error : access violation

本文关键字:访问 错误 Intel STD 排序 编译器      更新时间:2023-10-16

为什么此简单的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 Call

相关的以下错误
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 Compiler 64位版本17.0.4.210 Build 20170411。

使用默认的Visual Studio编译器成功编译了代码。

找不到我做错了什么。

我发现,不幸的是,Visual Studio Update 15.5.x Breaking Intel Compiler 2017,如在英特尔论坛上可以看到的,我问了同样的问题。希望它对其他人也会有用。