2010-06-02 4 views
1

J'ai un morceau de code qui fonctionne en mode débogage dans VS2008, C++. Le problème est que lorsque je débogue le code ligne par ligne, à un point très étrange du code, il se bloque et dit:Un plantage étrange

debug assertion faild. Expression: _BLOCK_TYPE_IS_VALID (pHead-> nBlockUse)

Le point de chute est le premier fermé Accolade (après> bords Mesh [e] .needsUpdate = false;) Je ne comprends pas pourquoi un bouclés support? Est-ce que cela a du sens pour vous les gars? Quelqu'un peut-il m'aider à comprendre ce qui se passe ..?

for(int e=0; e<mesh->edges.size(); e++) 
{ 
    if(mesh->edges[e].valid && mesh->edges[e].v[0]>=0 && mesh->edges[e].v[1]>=0 && 
     mesh->points[mesh->edges[e].v[0]].writable && mesh->points[mesh->edges[e].v[1]].writable) 
    { 
     //update v_hat and its corresponding error 
     DecEdge Current = DecEdge(e); 
     pair<Point, float> ppf = computeVhat(e); 
     Current.v_hat = ppf.first; 
     Current.error = ppf.second; 

     edgeSoup.push(Current); 
     mesh->edges[e].needsUpdate=false; 
    } 
} 
+0

Alors qu'est-ce qui s'est passé avec ça ??? –

Répondre

1

Dans mon expérience, les accidents qui se produisent sur une accolade fermante signifie que l'accident est arrivé dans un destructor qui a couru lorsque le bloc est sorti de la portée. Je vérifierais ce qui se passe dans les destructeurs pour DecEdge et Point.

0

Vérifiez si vous avez supprimé l'un des pointeurs que vous avez utilisés. Cela peut être une raison.

0

Certaines bibliothèques sont compilées en mode DEBUG et d'autres en mode RELEASE.