2014-05-22 1 views
3

Visual Studio의 정상적인 메모리 검색에서 안전한 메모리 누수를 숨기는 방법이 있습니까? 내가 메모리 감지하고Visual Studio에서 누출 감지로 인한 안전한 메모리 누수를 숨길 수 있습니까?

이 디버그 플래그를 사용하여 누수 :

_CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); 

난 그냥 C++로 프로젝트를 Boost.Python을 embedd하는 방법을 찾는 데 많은 시간을 보낸다. 그것은 훌륭하게 작동했고, 나는 유연성을 감동 시켰습니다. 마침내 모든 노력이 끝내주었습니다. 즉, 영혼이 부서지기 전까지 Python 통합에는 메모리 누수가 있습니다. 알고있는 문제인 것으로 보이며 수정되지 않습니다 Does the Python 3 interpreter leak memory when embedded?. 메모리 누출은 일정하기 때문에 무시할 수 있다고합니다. 그러나 Visual Studio에서 누수 탐지 기능을 사용하면 큰 도움이되며, 프로그램을 실행할 때마다 위양성 (false positive)이 나타나면 실제 메모리 누수를 감지하는 것이 훨씬 어려워집니다. 그걸 포기하고 싶지는 않지만 파이썬 에더를 포기하고 싶지는 않습니다.

메모리 누수를 숨길 방법이 있습니까? 정적 라이브러리, DLL, 별도의 프로세스, 아무것도 코드를 래핑?! 내가 필사적으로 들리는다면 그것이 내가 느끼는 것과 아주 흡사하기 때문입니다. ;)

+0

당신이에 배치 일부 타사 코드에 의해 생성 된 특정 코드 부분, 또는 누출에서 메모리 누수를 숨기시겠습니까 다른 도서관? –

답변

3
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) & ~_CRTDBG_ALLOC_MEM_DF); 

// allocations here are ignored by memory leaks tracker 

_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_ALLOC_MEM_DF); 

// memory leaks tracking continues 
원래 상태로 추적 메모리 누수를 복원

일반 버전 :

int flags = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); 
_CrtSetDbgFlag(flags & ~_CRTDBG_ALLOC_MEM_DF); 

// allocations here are ignored by memory leaks tracker 

_CrtSetDbgFlag(flags); 

// memory leaks tracking returns to its original state 
+0

그것은 작동합니다! 나는 너에게 충분히 감사 할 수 없다! :) – Adelost

+0

두 번째'_CRTDBG_ALLOC_MEM_DF' 앞에 '_'도 있어야합니다. 그것은 아주 분명한 실수이지만, 아마 당신은 완전을 위해 그것을 고쳐야 할 것입니다. – Adelost

+0

고정되어있어 잘라 붙이기가 잘못되었습니다. 감사. –

관련 문제