2017-12-20 8 views
0

왜이 간단한 C++ 코드가 컴파일되지 않습니까?C++ std :: sort intel 컴파일러 오류 : 액세스 위반

#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); 

} 

컴파일러는 표준에 관련된 다음과 같은 오류를 반환 :: 종류의 내가 비주얼 스튜디오 기업 2017 버전 15.5.2과 인텔 컴파일러 64 비트 버전을 사용하고

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>     ^

전화 17.0.4.210 빌드 20170411.

코드는 기본 Visual Studio 컴파일러를 사용하여 성공적으로 컴파일됩니다.

내가 잘못하고있는 것을 찾을 수 없습니다.

+0

C++에서 데이터 구조를 초기화하는 방법을 살펴볼 수 있습니다. 'malloc'은 이미 C++에서 나쁜 습관으로 간주되고 있지만 STL 벡터를 초기화하는 데는 전혀 작동하지 않습니다. – Zinki

+0

@Zinki STL 벡터가 없습니다 (단 하나 여야합니다) – user463035818

+3

무엇을하고 싶습니까? 왜 당신은'malloc '을 사용하고 있습니까? 왜 그 모든 캐스팅? 왜'std :: vector'가 아닌가? – user463035818

답변

0

저는 불행히도 시각적 인 스튜디오 업데이트 15.5.x가 intel forum에서 볼 수있는 것처럼 동일한 질문을 한 인텔 컴파일러 2017을 깨뜨리는 것을 발견했습니다. 희망은 다른 사람들에게도 유용 할 것입니다.