iOS Инструменты пропускают освобождение стека потоков, или эта утечка реальна? - PullRequest
0 голосов
/ 09 марта 2020

При запуске наше приложение запускает большое количество потоков для асинхронной загрузки файлов, таким образом:

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 с использованием кода выше.

Мне нужно знать происходит ли ошибка в инструменте или в самой резьбе. Я подозреваю, что первое, но не смог доказать это к моему собственному удовлетворению.

...