Wolnostojące wątki i wyciek pamięci

Czy ktoś może mi wyjaśnić, dlaczego ten prosty kod przecieka pamięć?

Uważam, że ponieważ pthreads są tworzone z odłączonym stanem, ich zasoby powinny być uwalniane natychmiast po ich zakończeniu, ale tak nie jest.

Moje środowisko to Qt5.2.

#include <QCoreApplication>
#include <windows.h>

void *threadFunc( void *arg )
    {
    printf("#");
    pthread_exit(NULL);
    }

int main()
    {
    pthread_t thread;
    pthread_attr_t attr;

    while(1)
        {
        printf("\nStarting threads...\n");
        for(int idx=0;idx<100;idx++)
            {
            pthread_attr_init(&attr);
            pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
            pthread_create( &thread, &attr, &threadFunc, NULL);
            pthread_attr_destroy ( &attr );
            }
        printf("\nSleeping 10 seconds...\n");
        Sleep(10000);
        }
    }

AKTUALIZACJA:

Odkryłem, że jeśli dodam niewielkie opóźnienie 5 milisekund w środkufor pętla wyciekuSPOSÓB wolniej:

    for(int idx=0;idx<100;idx++)
        {
        pthread_attr_init(&attr);
        pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
        pthread_create( &thread, &attr, &threadFunc, NULL);
        pthread_attr_destroy ( &attr );
        Sleep(5); /// <--- 5 MILLISECONDS DELAY ///
        }

 To mnie przeraża, czy ktoś mógłby mi powiedzieć, co się dzieje? Jak to niewielkie opóźnienie może spowodować tak znaczącą zmianę? (lub zmień zachowanie w jakikolwiek sposób)

Wszelkie porady byłyby bardzo mile widziane.

Dzięki.

UPDATE2:

Ten wyciek zaobserwowano na platformach Windows (W7 i XP), nie zaobserwowano wycieku na platformach Linux (dziękuję @MichaelGoren)

questionAnswers(5)

yourAnswerToTheQuestion