为什么这个简单的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
Studio\2017\Enterprise\VC\Tools\MSVC\14.12.25827\include\algorithm(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中看到我问同样的问题。希望它对其他人也有用。