2013-01-08 1 views
-1

우분투에서 아무런 문제없이 작성하고 실행 한 C++ 프로젝트는 윈도우에서 실행할 때 "벡터 아래 첨자가 범위를 벗어났습니다."예외를 반환합니다. Windows 7과 Visual C++ 2008 Express를 사용합니다.우분투 - Windows 호환되지 않는 C++/Vector 하위 스크립트

나는 누군가에게 의미가 있기를 바랍니다.

+3

최소한의 예제 코드를 재현하여 게시 할 수 있습니까? 때로는 어려운 일이지만, 코드가 전혀 없어도 누군가가 같은 상황에 처하지 않았다면 무엇이 잘못되었는지를 추측하기가 어렵습니다. – leemes

+0

코드의 어느 부분에서 오류가 발생하는지 알 수 없으며 단지 하나의 프로젝트가 아닙니다. 나는 3 가지 프로젝트에 대해 같은 오류가 발생한다. – seda

+0

Visual Studio에는 훌륭한 디버거가 있습니다. 중단 점을 설정하고 디버그 모드로 프로그램을 실행하기 만하면됩니다. 또는 중단 점없이 실행하고 예외가 발생했을 때의 위치를 ​​보려면 호출 스택을 살펴보십시오. –

답변

1

Microsoft에서 제공하는 STL 버전은 checked iterators과 함께 제공되며 디버그 모드에서 실행하면 벡터 인덱스가 범위 내에 있는지 확인합니다. GCC에서는 기본적으로 이러한 검사가 수행되지 않습니다.

1

코드에는 정의되지 않은 동작이 포함되어 있습니다. 그러한 경우 구현은 원하는 거의 모든 것을 자유롭게 수행 할 수 있습니다. gcc는 기본적으로 문제를 무시한 것으로 보입니다. VC++는 코드를 스스로 모니터링하여 문제를 찾아내어 알려줍니다.

다음 단계는 대부분 당신에게 달려 있습니다 : 코드에서 문제를 찾아 고쳐야합니다. 불행하게도 코드를 게시하지 않았으므로 수행해야 할 작업이나 수행 방법에 대한보다 자세한 조언을하는 것은 본질적으로 불가능합니다. 내가 생각할 수있는 유일한 힌트는 VC++의 디버거가 좋은 스택 추적 기능을 가지고 있기 때문에 디버거에서 코드를 실행하면 실패 할 수 있으므로 스택을 백업하여 호출 한 코드를 쉽게 찾을 수 있습니다. 문제가 발견 된 기능 (함수를 호출하는 등).