2010-03-24 2 views
1

je suis arrivé cette erreur"exception non gérée" erreur lors de l'utilisation d'une boucle à l'intérieur fil

Unhandled exception at 0x0049b946 in Program.exe: 0xC0000005: Access violation reading location 0x00000090.

et les points d'erreur à cette ligne:

 // thread.hpp ln 56 
     void run() 
     { 
      f(); // here << 
     } 

Lorsque vous essayez d'exécuter ce code:

void frameFunc() 
{ 
    for(;;) 
    { 
     //..........do something. it is too long to paste. (calculations) 
    } 
} 

int main() 
{ 
    boost::thread framethread(frameFunc); 
    framethread.join(); 
    //........ 
} 

L'erreur disparaîtra simplement lorsque je supprime la boucle dans frameFunc.

Toute aide serait appréciée :)

+2

Que fait "faire quelque chose"? – kennytm

+0

il est trop long à coller. ce sont tous des calculs de jeu (plus de boucles, modification des variables, mise à jour des objets: mise à jour de FMOD Ex, positions des sprites, etc.). rien d'autre. –

Répondre

2

Le code que vous montriez semble valide. Je pense que le problème est à l'intérieur du code qui n'est pas montré.

+0

et pourquoi le programme fonctionne bien si je supprime la boucle .. –

+2

Vous trouverez probablement que le code fonctionnera toujours bien si vous supprimez uniquement le contenu de la boucle ... –

+0

Voici un exemple de pourquoi faire quelque chose plusieurs fois peut segfault: 1) int x [2]; int * p = x; * p = 3; 2) p ++; * p = 4; 3) p ++; * p = 7; <- crash. –

Questions connexes