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

OpenCV Discussion :

Valgrind et OpenCV, pas faits pour s'entendre?


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Par défaut Valgrind et OpenCV, pas faits pour s'entendre?
    Salut à tous,

    voilà j'ai un soucis lors de l'utisation de la librairie Opencv...
    en faite, j'ai réimplémenté un détecteur de Harris en me basant sur la structure IplImage que fournit la librairie.

    Ici, vu que l'implémentation en tant que tel était terminée, je voulais un peu voir si la mémoire était plus ou moins bien gérée afin de régler les dernières problèmes...

    Donc j'ai utilisé Valgrind qui m'a indiqué d'énormes fuites de mémoires... Il y en avait certaines qui venait de moi, j'oublié de libérer certaines choses. Cependant, je n'ai réussi à trouver toutes les fuites donc j'ai construit un programme très simple:

    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
    30
     
    #include <iostream>
    #include "HarrisDetector.h"
    #include <opencv/cv.h>
    #include <opencv/highgui.h>
    #include <opencv/cvaux.h>
     
    using namespace std;
     
    int main(int argc, char** argv) {
      cout << "Harris Detector" << endl;
     
      IplImage* source = cvLoadImage("../lena.jpg");
      if (!source) {
        cerr << "Cannot open the file, please verify it" << endl;
        return -1;
      }
     
      cvNamedWindow("Output Display", CV_WINDOW_AUTOSIZE);
     
      char key = ' ';
      while (key != 'q') {
        cvShowImage("Output Display", source);
        key = cvWaitKey(33);
      }
     
      cvDestroyAllWindows();
      cvReleaseImage(&source);
      return 0;
    }
    Après avoir compilé ce programme avec la commande suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g++  main.cpp --pedantic -Wall -ansi `pkg-config --cflags opencv` `pkg-config --libs opencv`
    et lancé Valgrind, voilà ce que j'obtiens après avoir terminer l'exécution du programme:
    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
     
    ==12615== Memcheck, a memory error detector
    ==12615== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
    ==12615== Using Valgrind-3.5.0-Debian and LibVEX; rerun with -h for copyright info
    ==12615== Command: ./a.out
    ==12615== 
    Harris Detector
    ==12615== 
    ==12615== HEAP SUMMARY:
    ==12615==     in use at exit: 832,338 bytes in 6,749 blocks
    ==12615==   total heap usage: 36,936 allocs, 30,187 frees, 4,422,019 bytes allocated
    ==12615== 
    ==12615== LEAK SUMMARY:
    ==12615==    definitely lost: 180 bytes in 2 blocks
    ==12615==    indirectly lost: 240 bytes in 10 blocks
    ==12615==      possibly lost: 496,802 bytes in 4,026 blocks
    ==12615==    still reachable: 335,116 bytes in 2,711 blocks
    ==12615==         suppressed: 0 bytes in 0 blocks
    ==12615== Rerun with --leak-check=full to see details of leaked memory
    ==12615== 
    ==12615== For counts of detected and suppressed errors, rerun with: -v
    ==12615== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)
    Donc j'aimerais savoir d'ou viennent toutes ces fuites mémoires alors que le programme exécuté est très simple... peut-être que je fais quelque chose de "mal" ^^.

    Enfin j'espère avoir des réponses .

  2. #2
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    Salut,

    tu peux lancer valgrind avec les options :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    --leak-check=full -v
    qui devrait le rendre beaucoup plus bavard (et surtout t'indiquer d'où viennent les fuites ^^)

Discussions similaires

  1. comment on fait pour ne pas raffraichir la page apres l'alerte
    Par nebil dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/08/2006, 18h55
  2. Réponses: 2
    Dernier message: 02/08/2005, 11h33
  3. Réponses: 11
    Dernier message: 29/06/2005, 17h55
  4. Réponses: 4
    Dernier message: 28/03/2005, 19h42
  5. Réponses: 8
    Dernier message: 08/05/2004, 13h58

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