2011-09-26 3 views
-1

C valgrind로 확인하는 동안 코드가 메모리 누수를 나타내지 않습니다. 하지만 메모리 관리를 담당하는 다른 시스템과 코드를 통합 할 때 물론 메모리 할당을 위해 malloc을 호출하면 메모리 누수가 발생합니다. Valgrind 검사는 매번 정확 했었지만 이번에는 제대로 작동하지 않았습니다. valgrind 메모리 누수가 없다고하더라도 메모리 누수의 가능성이 있는지 알고 싶습니다. 가장 힘든 메모리 누수를 찾기 위해 valgrind의 가장 강력한 매개 변수가 될 수있는 것은 무엇입니까?valgrind가 메모리 누수가 없음을 나타내는 메모리 누수 가능성

+0

이것은 분명하지 않습니다. 좀 더 정확해질 수 있을까요? –

+0

@ David, 답장을 보내 주셔서 감사합니다. 표준 라이브러리를 사용하여 ** C **에서 구현 된 하나의 데이터 구조를가집니다. 나는 ** valgrind **를 사용하여 메모리 누수를 점검했다. valgrind는 ** 메모리 누수가 없음 **을 보여준다. 동일한 코드를 다른 프로젝트와 통합하면 메모리 누수가 발생합니다. 자체 메모리 관리 모듈을 프로젝트하지만 메모리를 할당하고 해제하는 데 ** 동일한 ** malloc ** 및 ** 무료 **를 사용합니다. 프로젝트에 통합되기 전과 동일하며 ** valgrind **에서 테스트 된 프로젝트에서 통합 후 메모리 누수가 발생하지 않으며 메모리 누출도 없었습니다. – thetna

+0

contd ....하지만 이번에는 valgrind가 메모리 누수를 표시하지는 않지만 일단 프로젝트에서 동일한 코드를 통합하면 메모리 누수가 발생합니다. – thetna

답변

3

나는 여전히 valgrind에 버그가 있다고 생각하지 않기 때문에 메모리 누수가 발생할 가능성이 매우 높다고 생각하지만, 다른 프로젝트와 통합하면 테스트와 다른 코드가 실행될 가능성이 높습니다. (FYI - valgrind가 내 코드가 명확하다고 말하는 곳에서는 메모리 누출 사례를 발견하지 못했지만 거의 완벽한 증거는 아닙니다.) 나는이 문제를 해결하기 위해 un-integrated 버전에 테스트를 추가하거나 valgrind에서 통합 버전을 실행하는 것으로 생각한다.

다른 옵션으로 유해 할 수있는 오류를 억제하지 못하도록하거나, --leak-check = full을 추가하거나, valgrind 설정으로 재생할 수 있습니다.