IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Variable qui se remet à 0 TOUTE SEULE


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut Variable qui se remet à 0 TOUTE SEULE
    Bonjour à tous,

    Alors voilà, je fais du traitement d'images en c++, et j'ai besoin de chronométrer le temps, afin de stopper le programme si la détection n'a pas abouti.

    A chaque chargement d'une image à traiter, j'appelle cette première fonction d'initialisation pour récupérer le temps de départ t_start :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // square_detect.h
     
    int t_start, t_type_start;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    square_detect.cpp
     
    // Initialisation: 
     void  square_detect:: init_detection()
     {
         t_start = clock();  
         cout << "CLOCK_START = " << t_start << "\n"; // affiche 136 922
         cout << "CLOCKS_PER_SEC = " << CLOCKS_PER_SEC << "\n"; // affiche 1000
     
     }
    Avec les 10 premières images, ça marche, et lorsque j'atteins une certaine image (la 15eme), le compteur t_start se remet à 0 entre l'initialisation et ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    if((int)((clock()-t_start)/CLOCKS_PER_SEC) > 60)
    {
         cout << "TEMPS ECOULE 1\n";
         cout << "CLOCK = " << (int)clock() << "\n"; // 138 212
         cout << "CLOCK_START = " << t_start << "\n"; // AFFICHE 0 (POURQUOI ???, je ne l'ai pas réinitialisé !!!)
         cout << "CLOCK - CLOCK_START= " << (int)(clock()-t_start) << "\n"; //  affiche 138 216 
         cout << "TEMPS = " << (int)((clock()-t_start)/CLOCKS_PER_SEC) << " secondes\n"; // affiche 138  secondes
         goto STOP; // du coup mon programme s'arrête au bout de 2 secondes !
    }
    J'ai placé un cout << "CLOCK_START = " << t_start << "\n"; à divers endroits du programme, et il affiche 0 très rapidement !! Pourtant je ne l'initialise qu'au début avec clock() et ensuite je n'y touche plus !! Conflit d'adresses vous pensez ??

    Je suis donc formel : J'AI UNE VARIABLE QUI SE REMET A ZERO TOUTE SEULE !!!!!

  2. #2
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Par défaut
    Salut,
    La fonction clock() renvoie un clock_t. Es-tu certain que clock_t est un alias pour un int?

  3. #3
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut
    Salut,

    oui je sais, au début j'avais déclarer :


    mais rien n'y change. La variable se remet quand même à 0 toute seule !


  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Probablement un écrasement mémoire quelque-part.... Avec ton debugger, tu dois pouvoir mettre en place un breakpoint quand une certaine adresse mémoire est modifiée. C'est l'idéal pour debugger ce genre de soucis.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut
    Merci,

    Apparemment, l'exécution se comporte différemment selon l'ordre de déclaration des variables dans le .h !

    J'ai donc apparemment résolu mon problème en changeant la ligne de déclaration de cette variable dans le .h

    Mais pourquoi diable cela influe-t-il sur l'exécution ?

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Ca indique de plus en plus un dépassement mémoire.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2013] Champ qui se remet à zéro tout seul, bizarre non?
    Par djibouli dans le forum IHM
    Réponses: 1
    Dernier message: 29/07/2014, 11h39
  2. Variable qui s'initialise à 0 toute seule
    Par algerino77 dans le forum C++Builder
    Réponses: 9
    Dernier message: 21/05/2014, 12h48
  3. Variable qui change de valeur "toute seule"
    Par GDMINFO dans le forum C++
    Réponses: 9
    Dernier message: 14/10/2010, 18h12
  4. Variable qui change de valeur toute seul :(
    Par lcfseth dans le forum C
    Réponses: 12
    Dernier message: 22/12/2007, 12h25
  5. Un programme qui se met à jour tout seul
    Par ElbaC dans le forum C++
    Réponses: 6
    Dernier message: 09/06/2006, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo