Bonjour,

Je me rapproche de vous en espérant que vous pourrez m'aider à apporter une réponse CLAIRE, NETTE et PRÉCISE aux deux questions suivantes:

Faut-il libérer la mémoire des GtkWidget à la sortie du cadre dans lequel ils ont été créé ? ( bien évidemment si l'on en a plus besoin. )

Et, faut-il aussi le faire à la fermeture du programme ?
Concrètement faut-il faire ceci?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
MaFonction()
{
    GtkWidget *pLabel = NULL;

    pLabel = gtk_label_new("Ici_mon_texte");

         Ici, la suite du code
free(pLabel); // Je libère la mémoire. pLabel = NULL; // Je réinitialise le pointeur à NULL. }

Les recherches que j'ai pu faire sur le net, ne m'ont pas apporté de solution pérenne.

Une fois c'est: "Non, le système s'en charge."

Une autre fois c'est: "Oui, le système s'en charge, mais c'est mieux de le faire quand même... on ne sait jamais."

Ou bien alors: "Oui, il faut le faire...."

C'est la net, il y a à boire et à manger...


Or, si j'ai bien compris le fonctionnement de la mémoire, un GtkWidget ( ici pLabel ) est rangé dans la pile, qui sera automatiquement vidée à la sortie de la fonction et du programme.

Donc, si c'est ça, free(pLabel) et pLabel = NULL deviennent inutile.

Oui mais, c'est si j'ai bien compris... et je ne suis sûr de rien.

D’où ma requête auprès de vous.


Merci de tout l'éclairage que vous saurez m'apporter.

Bonne soirée et bon WE.

Claude