bonjour, :D
j'ai un code qui part en exception systématiquement:
qui m'aidera sera :ccool:Code:
1
2
3 itChunk = pCurrentElement->pListChunk->begin(); pCurrentChunk = *itChunk; itWord = pCurrentChunk->pListWord->begin();
Version imprimable
bonjour, :D
j'ai un code qui part en exception systématiquement:
qui m'aidera sera :ccool:Code:
1
2
3 itChunk = pCurrentElement->pListChunk->begin(); pCurrentChunk = *itChunk; itWord = pCurrentChunk->pListWord->begin();
Wow, bonjour le contexte... :roll:
Arrête de faire le con avec ta gestion mémoire (pointeurs nus là où ils ne sont pas nécessaires, etc.) et ce sera déjà un bon début...
J'ai vérifoié avant de poster que les pointeurs avait des valeurs
pour pCurrentElement J'ai d'ailleurs passé un test qui passe bien
Code:int TypeElement = pCurrentElement->TypeElement;
Dans ce cas, c'est pListChunk qui n'est pas/plus un pointeur valide...
voila la valeur de pListChunk: pCurrentElement->pListChunk = 0xBAADF00D !!! qui n'est pas valide après rectification il a la valeur pCurrentElement->pListChunk = 0x07BAA568
et pCurrentElement a la valeur pCurrentElement = 0x07BAE898 { idElement=-1163005939 idSegSrc=-1163005939 iIdDoc=1 ...}
et pListWord a La valeur pCurrentChunk->pListWord = 0x07BACD80
avec pCurrentChunk = 0x07B9D690
et on plante sur l'instruction que j'ai mis après test sur l'instruction:
Code:pCurrentChunk->pListWord = new std::list<CAnalysedWord*>();
0xBAADF00D => Bad Food => Mauvaise Bouffe.Citation:
pCurrentElement->pListChunk = 0xBAADF00D
Vous envoyez de la merde parce que vous n'initialisez pas vos butins de champs pointeurs, dites merci au Runtime de Debug qui a la courtoisie de vous le montrer.
Vous ne savez pas vous servir de pointeur, N'UTILISEZ PAS DE POINTEURS.
voila la valeur de pListChunk: pCurrentElement->pListChunk = 0xBAADF00D !!! qui n'est pas valide après rectification il a la valeur pCurrentElement->pListChunk = 0x07BAA568
et pCurrentElement a la valeur pCurrentElement = 0x07BAE898 { idElement=-1163005939 idSegSrc=-1163005939 iIdDoc=1 ...}
et pListWord a La valeur pCurrentChunk->pListWord = 0x07BBA3E8
avec pCurrentChunk = 0x07B9D690 qui a comme valeur pListWord = 0x07BBA3E8
J'ai modifié le code comme suit et je plante sur pListWord->begin()
Code:
1
2
3
4
5
6 int TypeElement = pCurrentElement->TypeElement; pCurrentElement->pListChunk = new std::list<CAnalysedChunk*>(); pCurrentChunk->pListWord = new std::list<CAnalysedWord*>(); itChunk = pCurrentElement->pListChunk->begin(); pCurrentChunk = *itChunk; itWord = pCurrentChunk->pListWord->begin();
ça passe dans la première partie de la partie dans proposition. je vous met le code:
mais ça plante dans la procédure de ngrammerCode:
1
2
3
4
5
6
7
8 int TypeElement = pCurrentElement->TypeElement; pCurrentChunk = new CAnalysedChunk(); pCurrentElement->pListChunk = new std::list<CAnalysedChunk*>(); pCurrentChunk->pListWord = new std::list<CAnalysedWord*>(); itChunk = pCurrentElement->pListChunk->begin(); itChunk = pCurrentElement->pListChunk->begin(); itWord = pCurrentChunk->pListWord->begin(); pCurrentElement->TypeElement = objNgramer.NewTypeElement( itWord, pCurrentChunk, pPreviousChunk, pNextChunk, pNext2Chunk);
la valeur de pWord est suspect,même si on met un pWord = new CAnalysedWord(); avant l'adresse de pWord est suspect pWord = 0xBAADF00D { ullWordID=0 ullLemmaID=0 wsWord=<valeur non définie> ...}
j'ai résolu ce problème en passant le pointeur au lieu de l'iterateur.