2012-07-31 5 views
2

Application Verifier의 작동 방식을 알고있는 사람이 있습니까?MS 응용 프로그램 검증 도구가 쌓이면 되나요?

현재 재귀를 많이 사용하는 트리 분석 응용 프로그램에서 작업 중입니다. 프로그램이 의도 한대로 작동하는 것처럼 보이지만, 몇 군데에서 "new"를 사용하므로 Application Verifier를 사용하여 메모리 누출 여부를 확인했습니다. AV는 오류를보고하지 않지만 몇 분 안에 응용 프로그램의 이미지가 약 1 기가 바이트로 빠르게 커지며 60 메가 정도가됩니다. 메모리 누수를 찾지 못했고 재귀가 얼마나 진행되는지 알 수 있습니다. AV가 테스트 목적을 위해 스택에 여분의 항목을 넣을 것으로 생각하기 시작했습니다. 재귀가 깊어지면서 추가 "정크"빌드 프로그램을 종료합니다.

누구든지이 문제에 대해 통찰력을 갖고 있습니까?

답변

1

어떤 AppVerifier 기능이 켜져 있는지에 따라 다를 수 있습니다. 각 할당을 자체 페이지에두고 할당 사이에 가드 페이지를 할당하는 힙 검사 기능이 있습니다. 작은 객체를 많이 할당하는 경우이 기능을 사용하면 메모리 사용량이 크게 증가합니다. 이것은 이런 종류의 테스트에서는 걱정할 필요가없는 정상적인 동작입니다.

손을 사용하지 않으면 스택 사용에 영향을주는 기능에 대해 알지 못합니다. 계측으로 코드를 다시 컴파일하지 않으면 스택을 망쳐 놓는 것이 어려울 것이라고 생각합니다. AppVerifier는 계측으로 컴파일 할 필요가 없습니다.

+0

많은 양의 객체를 할당하고 있습니다. 따라서 객체의 메모리를 비우지 만 이것은 단지 문제의 원인 일 수 있습니다. AppVerifier가 어떻게 든 할당 해제를 방해합니까? 흠, 또는 어쩌면 나는 * 재귀 호출 후에 메모리를 해제 할 뿐이므로 개체가 쌓이게됩니다. 확인해야 겠어. – LakatosI

+0

또한 AV에서 기본적으로 선택하는 테스트를 사용하고 있습니다. 내 코드를 살펴 봤는데 문제는 내가 너무 늦게 메모리를 풀어주는 것과 관련이 없다. – LakatosI

관련 문제