우분투에서 아무런 문제없이 작성하고 실행 한 C++ 프로젝트는 윈도우에서 실행할 때 "벡터 아래 첨자가 범위를 벗어났습니다."예외를 반환합니다. Windows 7과 Visual C++ 2008 Express를 사용합니다.우분투 - Windows 호환되지 않는 C++/Vector 하위 스크립트
나는 누군가에게 의미가 있기를 바랍니다.
우분투에서 아무런 문제없이 작성하고 실행 한 C++ 프로젝트는 윈도우에서 실행할 때 "벡터 아래 첨자가 범위를 벗어났습니다."예외를 반환합니다. Windows 7과 Visual C++ 2008 Express를 사용합니다.우분투 - Windows 호환되지 않는 C++/Vector 하위 스크립트
나는 누군가에게 의미가 있기를 바랍니다.
Microsoft에서 제공하는 STL 버전은 checked iterators과 함께 제공되며 디버그 모드에서 실행하면 벡터 인덱스가 범위 내에 있는지 확인합니다. GCC에서는 기본적으로 이러한 검사가 수행되지 않습니다.
코드에는 정의되지 않은 동작이 포함되어 있습니다. 그러한 경우 구현은 원하는 거의 모든 것을 자유롭게 수행 할 수 있습니다. gcc는 기본적으로 문제를 무시한 것으로 보입니다. VC++는 코드를 스스로 모니터링하여 문제를 찾아내어 알려줍니다.
다음 단계는 대부분 당신에게 달려 있습니다 : 코드에서 문제를 찾아 고쳐야합니다. 불행하게도 코드를 게시하지 않았으므로 수행해야 할 작업이나 수행 방법에 대한보다 자세한 조언을하는 것은 본질적으로 불가능합니다. 내가 생각할 수있는 유일한 힌트는 VC++의 디버거가 좋은 스택 추적 기능을 가지고 있기 때문에 디버거에서 코드를 실행하면 실패 할 수 있으므로 스택을 백업하여 호출 한 코드를 쉽게 찾을 수 있습니다. 문제가 발견 된 기능 (함수를 호출하는 등).
최소한의 예제 코드를 재현하여 게시 할 수 있습니까? 때로는 어려운 일이지만, 코드가 전혀 없어도 누군가가 같은 상황에 처하지 않았다면 무엇이 잘못되었는지를 추측하기가 어렵습니다. – leemes
코드의 어느 부분에서 오류가 발생하는지 알 수 없으며 단지 하나의 프로젝트가 아닙니다. 나는 3 가지 프로젝트에 대해 같은 오류가 발생한다. – seda
Visual Studio에는 훌륭한 디버거가 있습니다. 중단 점을 설정하고 디버그 모드로 프로그램을 실행하기 만하면됩니다. 또는 중단 점없이 실행하고 예외가 발생했을 때의 위치를 보려면 호출 스택을 살펴보십시오. –