При запуске наше приложение запускает большое количество потоков для асинхронной загрузки файлов, таким образом:
if( !pthread_create( &_handle,0,run,this ) ){ pthread_detach( _handle ); }
Согласно XCode все эти потоки завершаются и исчезают. Однако, согласно инструменту Allocations, 50 Мб VM: Stack остается выделенным, и только несколько стеков потоков загрузчика файлов освобождаются.
Если я заменю pthread_detach на pthread_join, Allocations сообщит, что память стека освобождена правильно.
Это поведение проявляется в XCode 11.3.1 при выделении около сотни потоков в быстрой последовательности на устройстве под управлением iOS 12.1.4 с использованием кода выше.
Мне нужно знать происходит ли ошибка в инструменте или в самой резьбе. Я подозреваю, что первое, но не смог доказать это к моему собственному удовлетворению.