레이 트레이싱 응용 프로그램을위한 특수 트리 데이터 구조를 구현했습니다. 각 트리의 노드에서 데이터 항목을 저장하기 위해 std :: list를 사용하고 있습니다. 이 데이터 구조를 사용하여 응용 프로그램을 실행해도 응용 프로그램뿐만 아니라 전체 OS (Windows 7)가 정지되는 문제가 있습니다. 이는 릴리스 모드에서만 발생합니다. 디버그 모드에서는 예상보다 오래 걸리지 만 제대로 작동합니다. Visual Studio 2010을 사용하고 있습니다. 릴리스 모드에서 실행 (Ctrl + F5) 또는 디버깅 (F5)을 수행하면 전체 시스템 충돌이 발생합니다.C++ 전체 시스템 충돌, 릴리스 모드 전용
내가 지금까지 발견 한 바에 따르면, 릴리스와 디버그 모드 사이의 다른 동작은 메모리 누수로 인한 것 같습니다. 디버그 모드 (내가 이해 한 것으로부터)는 좀 더 관대합니다. 그러나 나는 OS에 충돌하는 C++ 응용 프로그램에 대해서는 아무 것도 발견하지 못했습니다.
나는 이런 상황이 발생할 수있는 상황을 알고 싶습니다. 그래서 어디를 봐야하는지 알고 싶습니다. 매우 단순하고 문제를 추적하기 란 쉽지 않습니다. 광선 추적이 매우 평행하고 많은 데이터로 작업하기 때문입니다.
아, 문제는 이 아니며은 스택 오버플로를 일으키는 무한 재귀입니다. 나는 의도적으로 그런 일을 만들었지 만 그것은 OS를 파괴하지는 못했다.
사용자 공간 코드에서 Windows 7을 고정시키는 위업이 있습니다. 대용량 병렬 데이터 및 많은 양의 데이터라고 말하면 리소스가 부족하여 전체 시스템을 거의 멈추게 할 수 있습니까? 나는 사용 가능한 모든 RAM과 스왑을 통해 실행하여 애플 리케이션을 리눅스 시스템을 다운시켜 터미널을 전환하고 애플 리케이션을 죽이려고 3 분 작업이되었다. –
코드가 이식 가능한 경우보다 안정적인 OS에서 컴파일하고 버그의 원인을 찾으십시오. 운영 체제 충돌로 디버깅하는 데는 * 긴 시간이 걸립니다. – thiton
디버그 정보를 사용하여 릴리스 버전을 빌드하면 정상적으로 작동합니까? 그렇지 않으면 충돌이 일어나는 장소를 좁힐 수 있습니다. –