기존 코드베이스에 대해 Valgrind를 실행하면 "일치하지 않는 자유/삭제/삭제 []"오류가 많이 발생합니다. 그들 중 다수는 하나의 문제를 반복하고있다 : 그것은 라인 XXX에서 delete
오퍼레이션이 사용되는 반면, 라인 YYY에서는 malloc
오퍼레이션이 사용된다고 주장한다. 그러나 내가 불평하고 표시된 줄 번호로 이동하는 파일을 열면 메모리가 malloc
이 아니라 new
으로 할당되지 않은 것으로 나타났습니다. 할당 된 개체는 표준 ifstream
이고 new[]
도 아니고 delete[]
도 사용되지 않습니다.Valgrind가 new를 사용할 때 malloc을 사용한다고 주장합니다.
저는 Valgrind 3.5를 사용하고 있습니다. 아무도 무슨 일이 일어나고 있는지 전혀 모른다. 이것이 실제 오류가 될 수있는 방법을 알 수는 없지만 Valgrind가 많은 오탐을 일으키지 않는다고 주장하는 사람들을 보았 기 때문에 이것을 억압하기 전에 가짜라는 확신을 갖고 싶습니다.
난이 중복 질문이 아닌 희망 : 다음 샘플 프로그램은 같은 오류 메시지가보고있는을 생산하고 있습니다. 나는 Valgrind 질문의 좋은 숫자를 검색하고 만족스러운 답변을 찾지 못했습니다. 그건 그렇고, 코드를 게시 할 수 없습니다. –
@Karzak - 전체 실제 코드를 게시 할 수 없지만 문제를 재현하는 작고 완전한 예제를 만드는 것을 방해하는 것은 없습니다. – Flexo
FWIW 필자는 valgrind가 전에 free/delete/delete []와의 불일치에 대해 잘못 본 적이 없습니다. – Flexo