Это связано с бустом 1_46_1, поэтому может быть неверно для используемой версии.Посмотрите на источники повышения, если вы действительно хотите убедить себя.(Детектор утечек в OSX не обнаруживает никаких утечек, когда я запускаю ваш пример кода).
Это не фактическая утечка (если нет ошибки в любом из pthreads, устаревшей версии надстройки, которую вы используетеили ваш компилятор).
get_once_per_thread_epoch
malloc выделяет новый uintmax_t
и отображает его в локальное хранилище потока с epoch_tss_key
, у которого есть связанный деструктор, который освобождает сопоставленные данные.Следовательно, испорченная память гарантированно будет освобождена.
Я действительно не понимаю, почему valgrind обнаруживает это как утечку, но это может быть потому, что функции выхода pthreads выполняются в какой-то момент после функций valgrind.,Другая возможность состоит в том, что сами функции pthread протекают, но я не увидел в документации ничего, что могло бы предположить, что это так.