Ciao,
ho un progetto in C++ il quale alla sua esecuzione legge una lista di numeri

100
25
37
48

e memorizza il suo numero in una variabile globale per il suo utilizzo da parte di alcuni cicli.

Quello che non mi spiego è che senza generare alcun errore tale variabile dopo un certo numero di cicli si azzera e forse mi sfugge qualcosa che non ho ancora assimilato in merito alle eccezioni ed ai thread.
codice:
DWORD WINAPI ThreadPro( LPVOID lpParameter )
{
        FILE *fp;
        char tmpbuf[20];
        int n=0;

        fp=fopen("lista.txt","r");
        while(fgets(tmpbuf,sizeof(tmpbuf),fp) != NULL)
        {
                tmpbuf[strlen(tmpbuf)-1]='\0';
                ArrayLista[n++]=atoi(tmpbuf);
        }
        fclose(fp);

       
         while(!bAbort)    // ciclo all'infinito XY
        {
             for(int i=0; i < n; i++)
                     SendMyMessage(ArrayLista[i]);
            // qui in maniera pseudocasuale n si azzera nonostante
            // il codice esterno al while non viene più letto, ma solo allo start del thread
         }
}

void SendMyMessage( char *msg)
{
     for(int actconn = 0; actconn < Form1->ServerSocket1->Socket->ActiveConnections; actconn++)
                        Form1->ServerSocket1->Socket->Connections[actconn]->SendBuf(msg, len);
}
magari mi sfugge qualcosa

Grazie 1000