Valgrind zeigt Speicherverlust für printf und unbenutzte Blöcke an

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
  char *str = malloc(sizeof(char)*5);
  str = strcpy(str, "test");
  printf("%s\n", str);
  free(str);
  return 0;
}

Wenn ich Valgrind auf meinem Mac (OS X, 10.9.5) verwende, wird folgende Meldung angezeigt:

==77215== HEAP SUMMARY:
==77215==     in use at exit: 29,211 bytes in 374 blocks
==77215==   total heap usage: 451 allocs, 77 frees, 35,160 bytes allocated
==77215== 
==77215== 4,096 bytes in 1 blocks are still reachable in loss record 76 of 76
==77215==    at 0x66CB: malloc (in /usr/local/Cellar/valgrind/3.10.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==77215==    by 0x182855: __smakebuf (in /usr/lib/system/libsystem_c.dylib)
==77215==    by 0x197217: __swsetup (in /usr/lib/system/libsystem_c.dylib)
==77215==    by 0x1B0158: __v2printf (in /usr/lib/system/libsystem_c.dylib)
==77215==    by 0x1B06AF: __xvprintf (in /usr/lib/system/libsystem_c.dylib)
==77215==    by 0x187B29: vfprintf_l (in /usr/lib/system/libsystem_c.dylib)
==77215==    by 0x18596F: printf (in /usr/lib/system/libsystem_c.dylib)
==77215==    by 0x100000F2B: main (test.c:8)
==77215== 
==77215== LEAK SUMMARY:
==77215==    definitely lost: 0 bytes in 0 blocks
==77215==    indirectly lost: 0 bytes in 0 blocks
==77215==      possibly lost: 0 bytes in 0 blocks
==77215==    still reachable: 4,096 bytes in 1 blocks
==77215==         suppressed: 25,115 bytes in 373 blocks
==77215== 
==77215== For counts of detected and suppressed errors, rerun with: -v
==77215== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 15 from 15)

Tutprintf Speicher selbst zuweisen? Wenn ich das @ entferprintf Ich bekomme nur folgendes:

==77237== HEAP SUMMARY:
==77237==     in use at exit: 25,115 bytes in 373 blocks
==77237==   total heap usage: 450 allocs, 77 frees, 31,064 bytes allocated
==77237== 
==77237== LEAK SUMMARY:
==77237==    definitely lost: 0 bytes in 0 blocks
==77237==    indirectly lost: 0 bytes in 0 blocks
==77237==      possibly lost: 0 bytes in 0 blocks
==77237==    still reachable: 0 bytes in 0 blocks
==77237==         suppressed: 25,115 bytes in 373 blocks
==77237== 
==77237== For counts of detected and suppressed errors, rerun with: -v
==77237== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 15 from 15)

Woher kommen die 373 Blöcke?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage