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

GTK+ avec C & C++ Discussion :

Gestion de la mémoire


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Par défaut Gestion de la mémoire
    Bonjour ici.
    Voilà mon problème. Je développe actuellement ma première application utilisant Gtk et j'ai constaté un problème lors de l'utilisation de mon appli.
    Il semble y avoir une fuite de mémoire dans la fonction ci dessous. Je n'arrive pas à savoir où . L'espace alloué ne cesse de grandir lors de l'appel de cette fonction alors qu'il ne devrait pas et focément ça pose problème.

    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
     
    void AfficherPixbuf(GdkPixbuf *pPixbuf, GtkWidget *pDArea, gint Width, gint Height)
    {
    	GdkPixbuf *pTest;
     
    	pTest = gdk_pixbuf_copy(pPixbuf);
     
    	gtk_drawing_area_size(GTK_DRAWING_AREA(pDArea),Width,Height);
    	g_object_unref(pixmap);
    	pixmap = gdk_pixmap_new( pDArea->window, pDArea->requisition.width, pDArea->requisition.height, -1 );
    	gdk_draw_pixbuf(pixmap,NULL,pTest,0,0,0,0,Width,Height,GDK_RGB_DITHER_NONE,0,0);
     
    	gtk_widget_queue_draw(pDArea);
     
    	g_object_unref(pTest);
     
    }
    Voilà, merci d'avance.

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Salut et bienvenue sur les forums de developpez.com


    Je ne vois rien de vraiment choquant dans ton code... sauf que je ne vois d'où tu prend le pointeur pixmap ! Une variable globale au moins au module de compilation je suppose

    Sinon pour information, pour les GdkPixmap on utilise plutôt la fonction de destruction:
    Et pour les GdkPixbuf:
    Mais après ca, j'avoue ne pas être un très grand spécialiste dans le dessin avec Gdk, il faudrait un jour que je plonge dans ce sujet
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Par défaut
    Grand merci pour cette réponse rapide !

    oui pixmap est déclarée en global pour le moment (beurk!), j'ai hésité à le préciser mais ta déduction était bonne.

    Hop là une petite citation de la doc pour expliquer le pourquoi du g_object_unref.

    gdk_pixbuf_unref is deprecated and should not be used in newly-written code. Use g_object_unref().
    Sinon pour en revenir au soucis je commence à supposer un problème interne à Gdk . A voir, en même temps l'hypothèse d'une bourde (monumentale?!) de ma part est probable aussi !

    Hexba, qui essaye de garder le sourire

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Mouais c'est vrai, j'avais oublié que la fonction était dépréciée
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Réponses: 17
    Dernier message: 02/02/2006, 12h03
  2. gestion de la mémoire
    Par moldavi dans le forum C++
    Réponses: 17
    Dernier message: 04/02/2005, 23h18
  3. Réponses: 11
    Dernier message: 26/12/2004, 22h50
  4. Gestion de la mémoire entre plusieurs DLL
    Par Laurent Gomila dans le forum C++
    Réponses: 7
    Dernier message: 27/07/2004, 15h28
  5. Gestion des variables - mémoire ?
    Par RIVOLLET dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2002, 12h44

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