Intereting Posts
Функция Quarterion “lookAt” Неопределенные символы для архитектуры x86_64 с использованием FFTW Как избежать использования глобальных переменных в streamах Какова временная сложность инициализации массива? Умножьте на 7 эффективным способом Организация проекта в C Best Practices Передача c массивов в fortran в виде матрицы с переменным размером Выход из цикла while в EOF с использованием scanf в C C вопрос: добавление битов в целые числа без знака и побитовые операции (C89) Выделить память для структуры с указателем на символ в C В какой библиотеке Linux находятся системные вызовы и как эта библиотека связана с исполняемым объектным файлом, который содержит системные вызовы? Странные ошибки с использованием timeval struct и gettimeofday – из-за точки с запятой в #define Что происходит, когда указатель float присваивается указателю на char? Нежелательный выход с модульным оператором и ‘pow’ Можно ли полностью исключить мерцание при изменении размера windows?

Ошибка утечки macgr

Сегодня я установил valgrind на свой Mac os x 10.6 и попытался проверить его. И это оказалось странным утечкой памяти в системе. То, что я сделал, это просто создать простой c-файл, который получит кучную память и немедленно освободит его. Когда я побежал valgrind, он показал что-то вроде этого

Realfrees-MacBook-Pro:C Realfree$ valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./a.out ==2621== Memcheck, a memory error detector ==2621== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==2621== Using Valgrind-3.6.0 and LibVEX; rerun with -h for copyright info ==2621== Command: ./a.out ==2621== --2621-- ./a.out: --2621-- dSYM directory is missing; consider using --dsymutil=yes ==2621== ==2621== HEAP SUMMARY: ==2621== in use at exit: 88 bytes in 1 blocks ==2621== total heap usage: 2 allocs, 1 frees, 92 bytes allocated ==2621== ==2621== 88 bytes in 1 blocks are still reachable in loss record 1 of 1 ==2621== at 0x100010915: malloc (vg_replace_malloc.c:236) ==2621== by 0x1000260EB: get_or_create_key_element (in /usr/lib/libSystem.B.dylib) ==2621== by 0x100026008: _keymgr_get_and_lock_processwide_ptr_2 (in /usr/lib/libSystem.B.dylib) ==2621== by 0x100025FCF: __keymgr_initializer (in /usr/lib/libSystem.B.dylib) ==2621== by 0x1000245E7: libSystem_initializer (in /usr/lib/libSystem.B.dylib) ==2621== by 0x7FFF5FC0D4FF: ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) (in /usr/lib/dyld) ==2621== by 0x7FFF5FC0BCEB: ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int) (in /usr/lib/dyld) ==2621== by 0x7FFF5FC0BC9C: ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int) (in /usr/lib/dyld) ==2621== by 0x7FFF5FC0BDA5: ImageLoader::runInitializers(ImageLoader::LinkContext const&) (in /usr/lib/dyld) ==2621== by 0x7FFF5FC020EE: dyld::initializeMainExecutable() (in /usr/lib/dyld) ==2621== by 0x7FFF5FC06980: dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**) (in /usr/lib/dyld) ==2621== by 0x7FFF5FC016D1: dyldbootstrap::start(macho_header const*, int, char const**, long) (in /usr/lib/dyld) ==2621== ==2621== LEAK SUMMARY: ==2621== definitely lost: 0 bytes in 0 blocks ==2621== indirectly lost: 0 bytes in 0 blocks ==2621== possibly lost: 0 bytes in 0 blocks ==2621== still reachable: 88 bytes in 1 blocks ==2621== suppressed: 0 bytes in 0 blocks ==2621== ==2621== For counts of detected and suppressed errors, rerun with: -v ==2621== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) 

где до некоторой степени сохраняется доступная память. Любая идея, как исправить? или это нормально для mac

PS Я побежал valgrind с командой ls -l, и он показал кучу блока, который все еще был доступен. Я не уверен, что это нормальное поведение на Mac. ниже приведен результат командной строки «valgrind –tool = memcheck ls -l»:

 ==2734== ==2734== HEAP SUMMARY: ==2734== in use at exit: 118,331 bytes in 52 blocks ==2734== total heap usage: 1,253 allocs, 1,201 frees, 214,242 bytes allocated ==2734== ==2734== LEAK SUMMARY: ==2734== definitely lost: 0 bytes in 0 blocks ==2734== indirectly lost: 0 bytes in 0 blocks ==2734== possibly lost: 0 bytes in 0 blocks ==2734== still reachable: 118,331 bytes in 52 blocks ==2734== suppressed: 0 bytes in 0 blocks ==2734== Rerun with --leak-check=full to see details of leaked memory ==2734== ==2734== For counts of detected and suppressed errors, rerun with: -v ==2734== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) 

Возможно, вам придется использовать файл подавления valgrind для Mac . Похоже, какая-то общая память процесса выделяется не освобожденной, когда процесс завершается. Попробуйте с valgrind --suppressions= .

И для Mac OS X Lion вы должны использовать этот файл подавления: https://github.com/svn2github/valgrind/blob/master/darwin11.supp