F5 키가 디버깅을 시작하는 데 사용되고 디버거에서 실행될 때 Visual Studio는 디버거에서 실행되지 않을 때 발생하지 않는 작업을 수행합니다.
먼저 디버거가 모든 메모리를 지우므로 초기화되지 않은 변수가 0이됩니다. 이 지우기는 널 포인터로 초기화되는 초기화되지 않은 포인터 변수를 포함합니다. 당신은 포인터 변수를 초기화되지 않은 그들을 위해 널 포인터 검사를 한 경우 디버거에서 실행하는 경우
, 그 수표는 잘 작동하지만, 디버거에서 실행하지 않을 때 그 변수는 값을 확정 값을 가질 것 겉보기에는 무작위이고 널 포인터가 아닐 가능성이 큽니다. 따라서 디버거 외부에서 실행할 때 null이 아닌 포인터는 프로그램이 포인터를 유효하다고 생각하게하고 으로 정의 된 동작으로 이어질 포인터를 참조 취소합니다.
당신이해야 할 일은 코드를 살펴보고 초기화되지 않은 변수, 특히 포인터를 찾아 사용하기 전에 제대로 초기화되었는지 확인하는 것입니다.
다른 언급처럼
, Visual Studio 디버거와 다른 환경에서 또는 Visual Studio에서 프로그램을 시작하여 실행할 때 잘못 될 수있는 많은 다른 일들도 있습니다. 언급 된 한 가지 주요한 문제는 상대 파일 경로가 더 이상 올바르지 않을 수 있다는 것입니다. 다른 디렉토리에있는 명령 행에서 실행할 때나 프로그램 아이콘을 두 번 클릭하여 실행하는 경우 프로그램 작업 디렉토리는 Visual Studio에서 시작했을 때와 다릅니다. 게임 자산 및 기타 필요한 파일의 기본 디렉토리와 같은 것을 설명하는 일종의 구성 값을 갖는 것이 좋습니다. 그런 다음 프로세스의 현재 작업 디렉토리를이 디렉토리로 변경하거나이를 사용하여 자산의 절대 경로를 직접 확인할 수 있습니다.
MSVC에서 실행 파일을 디버그 모드로 실행하고 있습니까? –
사용하는 모든 상대 경로는 대기중인 버그입니다. 그것들을 고치면, 당신은 훨씬 더 가까이에, 어, pre-alpha와 같은 소리가납니다. – IInspectable
F5 대신 cltr + F5를 시도하십시오 (예 : 실행 대신 실행). 참조 : [link] (http://stackoverflow.com/questions/11202088/what-is-different-between-visual-studio-f5-ctrlf5-or-running-outside-of-visua) – Rotem