Ну, как уже говорили другие, вы должны free
это.
Причина этого заключается в следующем: все потоки имеют общую кучу, и концептуально «владение» памятью может передаваться между потоками.,Один поток может испортить что-то, а другой - освободить.Но куча не знает, кто «владеет» памятью, поэтому, когда ваш поток завершается (даже если куча запомнила, какой поток malloc'd что), он не может безопасно удалить его.
Но, когда ваш процесс завершается, вся кучная память фактически «освобождается», но не индивидуально: вся куча вашего процесса (которая, вероятно, была всего лишь одним большим куском) возвращается в операционную систему.