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:
Après avoir compilé ce programme avec la commande suivante
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; }
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 g++ main.cpp --pedantic -Wall -ansi `pkg-config --cflags opencv` `pkg-config --libs opencv`
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" ^^.
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)
Enfin j'espère avoir des réponses.
Partager