이 질문은이 question의 후속 조치입니다.메모리 누수 Sicstus Prolog
나는 Sicstus 프롤로그에서 테스트의 큰 숫자를 실행 해요 :
runtest:-
t1,
t2,
t3,
.
.
t100.
각각의 테스트가 독립하고 화면에 그 결과를 출력합니다. 테스트 간에는 관련성이 없으므로 각 테스트 사이에 데이터를 저장하거나 저장할 필요가 없습니다. '자원 오류 : 메모리 부족'
내가 이렇게 내 테스트를 조직하는 것을 시도했다 :
runtest:-
once(t1),
once(t2),
.
.
once(t100).
하지만 여전히 들어가 Sicstus 메모리를 축적하고 마지막 예외 안타 것을
내 문제입니다 문제.
각 호출 사이에 할당 된 메모리를 모두 해제하도록 Prolog에 지시하는 다른 방법이 있습니까?
일반적으로이 스타일을 공통 실패 구동 루프와 구분하는 데 많은 도움이됩니다. 'findall/3','setof/3'는 내부에서 실패 구동 루프를 가지고 있습니다. – false
'once (T)'는'T'만으로 충분하기 때문에 필요하지 않습니다. – false