Compaq Visual Fortran에서 프로그램을 작성했습니다. 프로그램이 정상적으로 작동하며 많은 경우 올바르게 실행됩니다. 내가 지금 일하고 있어요 사건은 더 큰 입력 데이터 파일과 함께, 더 큰이며, 나는 다음과 같은 오류가 프로그램을 실행하면Fortran에서 스택 오버플로
forrtl: severe(170): Program exception - stack overflow
을 나는 editbin.exe
프로그램이 설치되어 있지만, 정말 방법을 모르는 그걸 써.
editbin /STACK:4000000 DFDEV.exe
를 입력 할 때 그것이 내가이 프로그램을 포함하는 디렉토리 안에있어 경우에도, DFDEV.exe
을 열 수 있음을 알려줍니다 (C : \ 프로그램 파일 \의 Microsoft Visual Studio \ 공통 \ MSDEV98 \ BIN). 정말이 문제를 해결하는 방법을 모르겠다. 인터넷에서이 주제에 관해 발견 한 모든 주제에서이 editbin 프로그램을 사용하는 방법에 대한 설명이 없다.
아마도'editbin'을 실행할 때'DFDEV.exe'의 전체 경로를 제공해야합니다. 다른 커맨드 라인 입력없이 명령 행에'editbin' 만 입력하면 [editbin 옵션을 요약하는 사용법 설명을 볼 수 있습니다.] (http://msdn.microsoft.com/en-us/library/xd3shwhf % 28v = 80 % 29.aspx). 그러나 editbin을 사용하는 방법을 모르는 경우 프로그램 테스트 예외 오류를 디버깅하는 데 올바른 도구라고 생각하는 이유는 무엇입니까? – Chris
데이터가 너무 커서 스택에 맞지 않는 경우 힙에 할당하는 것이 좋습니다. –
+1 @ DavidHeffernan의 의견; 특히 동적 할당을 사용하지 않는 오래된 포트란 프로그램의 경우 스택 오버플로는 거의 항상 서브 루틴이나 함수의 대형 정적 배열이 너무 커져서 스택에 맞지 않는다는 것을 의미합니다. 운영체제에 따라서는 힙에 큰 배열을 할당하도록 컴파일러에게 확신시킬 수 있지만, 무엇보다도 큰 정적 배열을 전혀 가지지 않고 필요한 경우 할당하는 것이 가장 좋습니다. –