관리되는 C++ 코드에서 메모리 손상을 찾는 도구는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/34973

  •  09-06-2019
  •  | 
  •  

문제

이미지 압축을 위해 오픈 소스 C++ 압축 라이브러리를 사용하는 .NET 응용 프로그램이 있습니다.관리되는 C++를 통해 C++ 라이브러리에 액세스하고 있습니다.압축하는 동안 힙 손상이 발생합니다._CrtIsValidHeapPointer 호출은 압축 후 정리 시 free() 호출에서 오류를 찾습니다.

내 질문은 이 문제를 진단하는 데 도움이 되는 Purify와 같은 도구가 있고 관리 코드와 비관리 코드를 조합하여 작업할 때 힙 손상을 일으키는 원인이 무엇인지입니다.디버거에서 예외가 포착되었지만 문제에 대한 해결책을 찾는 데 도움이 되는 다른 도구가 있으면 좋을 것입니다.

도움이 되었습니까?

해결책

네이티브 코드에서 손상이 항상 메모리의 같은 위치에서 발생하는 경우 다음을 사용할 수 있습니다. 데이터 중단점 해당 메모리가 변경되면 디버거를 중단합니다.불행하게도 관리되는 C++ 환경에서는 데이터 중단점을 설정할 수 없습니다. 아마도 GC가 메모리에서 개체를 이동할 수 있기 때문일 것입니다.

이것이 도움이 될지는 확실하지 않지만, 이것이 여러분을 올바른 방향으로 이끌기를 바랍니다.

다른 팁

*nix에는 다음과 같은 도구가 있습니다. 발그린드 메모리 누수 및 메모리 손상과 같은 메모리 문제를 처리하는 데 사용합니다.

Windows용 Rational Purify .NET을 지원하므로 사용할 수 있을까요?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top