Я написал связанный список в C сегодня на работе на машине Linux, и все проверено в Valgrind. Затем я выполнил тот же тест (несколько нажатий, а затем удалил список) дома на OS X и получил сумасшедшее количество выделов.Valgrind показывает более 200 ассигнований для приветственной мировой программы на 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)
Я знаю, что код в порядке и не имеет утечек. Поэтому я просто прокомментировал тест списка и скомпилировал только printf("test\n");
, и он показал 263 allocs с 76 frees (у меня было 4 намеренных выделения в тестовом списке). Почему я получаю так много ассигнований на OS X? Это то, что сделала ОС? Я не понимаю, почему у меня было бы 263 ассигнований, когда я только что сделал printf ...
По крайней мере, в Linux, stdio-streams (включая 'stdin/stdout')' mmap() 'их буферы при первом использовании, а не при запуске программы. – EOF