Salut a tous,

je suis actuellement sur un projet développé en C++ avec SDL et certains j'ai quelques soucis d'exécution... mon programme plante! toute fois j'ai remarqué au cours de mes test pour trouver l'erreur, qu'il suffisait de rajouter une ligne de code pour résoudre le problème:par exemple, une fonction qui charge un fichier mais qui fait tout planter:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    //on ouvre le fichier passé en parametre
    ifstream fichier(_adresse_fichier.c_str(), ios::in);
 
    //si le fichier est bien ouvert
    if(fichier!=NULL){
        //on creer des variables temporaires
        int identifiant;
        string adresse_image;
        int nombre_collonne;
        int nombre_ligne;
        Sprite* p_sprite = NULL;
        //tant qu'on est pas a la fin du fichier
        while(!fichier.eof()){
            //on lit le fichier
            fichier >> identifiant >> adresse_image >> nombre_collonne >> nombre_ligne;
            //création du sprite
            creer_sprite();
            //on cherche le sprite
            p_sprite = avoir_p_sprite(-1);
            //modification du sprite
            p_sprite->charger_image(adresse_image.c_str(),nombre_collonne,nombre_ligne);
            //assignation de l'identifiant
            p_sprite->modifier_identifiant(identifiant);
        }
        //fermeture du fichier
        fichier.close();
    }
et la meme mais avec la ptite commande 'magique' qui ne plante pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    //on ouvre le fichier passé en parametre
    ifstream fichier(_adresse_fichier.c_str(), ios::in);
 
    //si le fichier est bien ouvert
    if(fichier!=NULL){
        //on creer des variables temporaires
        int identifiant;
        string adresse_image;
        int nombre_collonne;
        int nombre_ligne;
        Sprite* p_sprite = NULL;
        //tant qu'on est pas a la fin du fichier
        while(!fichier.eof()){
            //on lit le fichier
            fichier >> identifiant >> adresse_image >> nombre_collonne >> nombre_ligne;
            //création du sprite
            creer_sprite();
            //Copperfield en action!
            system("PAUSE");
            //on cherche le sprite
            p_sprite = avoir_p_sprite(-1);
            //modification du sprite
            p_sprite->charger_image(adresse_image.c_str(),nombre_collonne,nombre_ligne);
            //assignation de l'identifiant
            p_sprite->modifier_identifiant(identifiant);
        }
        //fermeture du fichier
        fichier.close();
    }
bref, tout ça c'est génial... a part que je ne sait toujours pas d'où vient le problème et que j'ai une jolie fenêtre de console qui me demande d'appuyer sur une touche pour continuer à chaque fois... bref je ne comprend pas comment cette simple commande peut tout changer comme ça (à signaler que je n'utilise pas de thread dans ce projet). d'autant plus qu'avant, toujours sur le même projet, j'avais trouver le moyen de résoudre un bug qui faisait planter le programme au début de l'exécution simplement (ou pas) en ajoutant un à la fin du code, juste avant le dernier return 0;

peut être est-ce juste une erreur de conception... mon programme est surement bourré de problème mais là je ne comprend pas. ou peu être est-ce un problème avec le compil? je suis sous CodeBlocks...

quelqu'un aurais t'il une idée du pourquoi du comment? je peut donner le code si quelqu'un a le courage de se plonger dedans pour comprendre...