그래서, :ICC의 segfaulting는
#include <string>
int foo() {
return 6;
}
int main() {
std::string t[foo()];
}
는 두 개의 유사한 프로그램 다음, 그러나, 잘 실행하는 것.
#include <string>
int foo() {
return 6;
}
int main() {
int f = foo();
std::string t[f];
}
및
#include <string>
int foo() {
return 6;
}
int main() {
std::string t[6];
}
나는 무슨 일이 일어나고 있는지에 대해 조금 혼란 스러워요. 외관상으로는 가변 길이 배열은 비표준이며, 항상 지원하는 g ++를 사용했기 때문에 이것은 놀랍습니다. 그러나 ICC가 지원하지 않는다면 왜 컴파일됩니까? 또한, 예제 2는 왜 "작동"합니까?
여기에 올바른 코드는 무엇입니까? 첫 번째 스 니펫이 올바르지 않은 경우 왜 컴파일되고 왜 세그 폴트됩니까?
2011 년 x86_64 Intel (R) Core (TM) i5에서 icc (ICC) 12.0.2 20110112를 사용하고 있습니다.
감사
이것은 C++ 코드이므로 icc로 컴파일하는 방법을 모르겠다. – xcramps
신경 쓰지 마라. 나는 ICC를 보았고 사용했던 .cpp 확장자를 알아 채지 못했다. icc는 icpc를 사용합니다. – xcramps
버그처럼 보입니다. 대안으로'std :: vector> t (f())'는 어떨까요? –