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 컴파일러를 사용하여 성공적으로 컴파일됩니다.
내가 잘못하고있는 것을 찾을 수 없습니다.
C++에서 데이터 구조를 초기화하는 방법을 살펴볼 수 있습니다. 'malloc'은 이미 C++에서 나쁜 습관으로 간주되고 있지만 STL 벡터를 초기화하는 데는 전혀 작동하지 않습니다. – Zinki
@Zinki STL 벡터가 없습니다 (단 하나 여야합니다) – user463035818
무엇을하고 싶습니까? 왜 당신은'malloc '을 사용하고 있습니까? 왜 그 모든 캐스팅? 왜'std :: vector'가 아닌가? – user463035818