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

Bibliothèques Discussion :

gstreamer problème mémoire


Sujet :

Bibliothèques

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 12
    Points : 10
    Points
    10
    Par défaut gstreamer problème mémoire
    Bonjour,

    je me permets de venir vers vous suite à un problème de mémoire avec gstreamer. J'ai de multiple questions sur le morceau de code suivant:
    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
     
        gst_init (&argc, &argv);
     
        string action ;
        cin >> action ;
     
        int SIZE = 99999;
     
        GstElement **source = NULL;
        source = new GstElement*[SIZE];
     
        for(int i=0;i<SIZE;i++){
            source[i] = gst_pipeline_new ("filesrc");
        }
     
        cin >> action ;
        for(int i=0;i<SIZE;i++){
            gst_object_unref(GST_OBJECT(source[i]));
        }
        cout << source[0] << endl;
        cin >> action ;
    Quand je lance le programme, il consomme: 2Mo.
    Après création des 99999 il consommes 150Mo
    Après l'appel de la méthode gst_object_unref je tombe à 80Mo.

    Ma grande question. Pourquoi, je ne retombe pas à 2Mo ? De plus, comment savoir si gst_object_unref fonctionne ? En effet, la mémoire semble bien libéré mais l'instruction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << source[0] << endl;
    m'affiche l'adresse mémoire. est-il normal de ne pas avoir 0 ?

    Merci

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Bonjour,

    Pour vérifier qu'il y a une fuite de mémoire, je vous conseille d'utiliser valgrind (sous Linux). Cet outils permet de vérifier les fuites de mémoire et autre erreurs de mémoire.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Je viens de tester avec valgrind et j'ai bien des fuites mémoire. Comment faire pour libérer la mémoire avec gstreamer ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int main()
    {
        gst_init(NULL,NULL);
        GstElement *element = gst_pipeline_new("src");
        info(element);
        gst_object_unref(element);
        info(element);
        gst_deinit();
        return 0;
    }
    résultat:
    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
    ==9098== 
    count: 1
    disposing: 0
    count: 0
    disposing: 0
    ==9098== 
    ==9098== HEAP SUMMARY:
    ==9098==     in use at exit: 1,364,118 bytes in 2,199 blocks
    ==9098==   total heap usage: 21,877 allocs, 19,678 frees, 3,899,417 bytes allocated
    ==9098== 
    ==9098== LEAK SUMMARY:
    ==9098==    definitely lost: 60 bytes in 1 blocks
    ==9098==    indirectly lost: 240 bytes in 10 blocks
    ==9098==      possibly lost: 543,952 bytes in 880 blocks
    ==9098==    still reachable: 819,866 bytes in 1,308 blocks
    ==9098==         suppressed: 0 bytes in 0 blocks
    ==9098== Rerun with --leak-check=full to see details of leaked memory
    ==9098== 
    ==9098== For counts of detected and suppressed errors, rerun with: -v
    ==9098== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2)
    De plus est-il normal de récupérer false avec cette méthode: GST_OBJECT_IS_DISPOSING dès que nous avons appeler unref sur l'objet ?

    Merci

Discussions similaires

  1. Problème mémoire, c'est grave là :/
    Par gamerome dans le forum C++
    Réponses: 6
    Dernier message: 12/08/2005, 13h29
  2. [CR9] [VB.NET] problème mémoire
    Par prophetky dans le forum SDK
    Réponses: 1
    Dernier message: 26/05/2005, 09h36
  3. Problème mémoire
    Par charliejo dans le forum MFC
    Réponses: 8
    Dernier message: 13/04/2005, 14h45
  4. Problémes mémoire avec le bde sur des bases paradox
    Par Keke des Iles dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/05/2004, 17h55
  5. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 14h20

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