Ich schrieb heute eine verknüpfte Liste in C bei der Arbeit auf einer Linux-Maschine und alles in Valgrind ausgecheckt. Dann habe ich den gleichen Test (eine Handvoll Pushs und dann Löschen der Liste) zu Hause auf OS X und bekam eine verrückte Menge an Allocs.Valgrind zeigt über 200 Zuweisungen für ein Hallo Welt-Programm auf OS X?
==4344== HEAP SUMMARY:
==4344== in use at exit: 26,262 bytes in 187 blocks
==4344== total heap usage: 267 allocs, 80 frees, 32,374 bytes allocated
==4344==
==4344== LEAK SUMMARY:
==4344== definitely lost: 0 bytes in 0 blocks
==4344== indirectly lost: 0 bytes in 0 blocks
==4344== possibly lost: 0 bytes in 0 blocks
==4344== still reachable: 0 bytes in 0 blocks
==4344== suppressed: 26,262 bytes in 187 blocks
==4344==
==4344== For counts of detected and suppressed errors, rerun with: -v
==4344== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Ich weiß, dass der Code in Ordnung ist und hat keine Lecks. Also habe ich gerade den Listentest kommentiert und nur mit printf("test\n");
kompiliert, und es zeigte 263 Alloc mit 76 Frees (ich hatte 4 absichtliche Allocs im Listentest). Warum bekomme ich unter OS X so viele Allocs? Ist das nur etwas, was das OS getan hat? Ich verstehe nicht, warum ich 263 Alloks haben würde, wenn ich nur einen Druck ...
Mindestens auf Linux, stdio-Streams (einschließlich 'stdin/stdout')' mmap() 'ihre Puffer bei der ersten Verwendung, nicht beim Programmstart. – EOF