Bonjour à tous,
je travaille sur un gros projet, qui est un affreux mélange de C et de C++. En debug, ça fonctionne bien. Mais en release, j'ai un crash très étrange et je ne parviens pas à détecter l'erreur.
Je suis parvenu à trouver l'endroit ou ça plante, mais je n'arrive pas à trouver pourquoi ça plante. C'est dans une grosse fonction (une quarantaine de lignes). Si dans la fonction, j'ajoute une ligne qui alloue de la mémoire (par exemple un vector), ça plante à la fin du bloc.
Par exemple, si je fais:
la sortie donne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 //code { std::cout << " *** 1 *** " << std::endl; vector<int> dum_vect( 520 ); std::cout << " *** 2 *** " << std::endl; } std::cout << " *** 3 *** " << std::endl; //code
si je fais:*** 1 ***
*** 2 ***
<crash>la sortie donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 //code std::cout << " *** 1 *** " << std::endl; vector<int> dum_vect( 520 ); std::cout << " *** 2 *** " << std::endl; //codeCa m'a tout l'air d'être une corruption de la pile, mais comment trouver quel est le code qui corrompt la pile? Le problème est que cette fonction utilise des tableaux "c-style" de types complexes, et si je dois vérifier tout j'en ai pour une semaine au moins. Et quel que soit l'endroit où je place mon allocation, le crash survient toujours à la sortie du bloc.*** 1 ***
*** 2 ***
<crash à la sortie du bloc suivant>
Je suis sous windows XP, avec visual 2008 pro SP1. Connaissez-vous des outils, des astuces, pour m'aider à trouver à quel endroit la pile est corrompue?
Partager