2012-04-30 2 views
2

내 응용 프로그램은 메모리를 늘리지 만 누출되지는 않습니다. 분석 중에 나는 할당 된 메모리의 대부분이 getcfprintf의 호출인데 누가 malloc (16kb)를 호출했는지 발견했습니다. 나는 그 함수들이 힙에 메모리를 할당한다는 것을 몰랐다. 특히 fprintf? 어떻게 무료로 할 수 있습니까?OS X에서 getc 및 fprintf에 의해 16KB가 할당되었습니다.

+3

그들은 매 통화마다 또는 한 번만 할당합니까? 후자의 경우, 아마 그것은 자신들의 의무 수행을 위해 사용하는 버퍼 일뿐입니다. 걱정하지 마십시오. 16 KB는 "일반"PC에서 * 아무것도 * 아닙니다. –

+0

그들은 여러 번 호출되지만 valgrind의 호출 그래프를 보면 getc와 fprintf와 관련된 함수를 호출 할 때마다 16KB가 1 블록에 할당됩니다 ... (16kb * 많은 호출) == 많이 메모리의. 그것이 버퍼라면, 어떻게 풀 수 있습니까? – Ynv

+1

정말로, _most_ 메모리는'getc'와'fprintf'에서 온 것입니까? – sarnold

답변

0

스트림을 닫기 전에 스트림에서 fflush를 호출하는 것을 잊어 버렸습니다 ... (설정이 스트림을 취소 할 수 없으므로 스트림을 플러시 할 수 없습니다 ...). 당신의 도움을 주셔서 감사합니다!