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

Composants VCL Delphi Discussion :

Libération de la mémoire du pointeur Data d'un TreeNode (TreeView)


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 125
    Points : 78
    Points
    78
    Par défaut Libération de la mémoire du pointeur Data d'un TreeNode (TreeView)
    Bonjour,
    Je ne parviens pas à libérer la mémoire des pointeurs Data de mon treeview.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ---------------------------
    Notification d''une exception du débogueur
    ---------------------------
    Le projet Gestion.exe a provoqué une classe d''exception EAccessViolation 
    avec le message Violation d''accès à l''adresse 004023C2 dans le module
    'Gestion.exe'. Lecture de l''adresse 00000006.  Processus stoppé. Utilisez 
    Pas-à-pas ou Exécuter pour continuer.
    ---------------------------
    OK   Aide   
    ---------------------------
    J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dispose(MonTreeNode.data)
    Une idée pour me dépanner?
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 469
    Points : 24 905
    Points
    24 905
    Par défaut
    Attention, tu libères un Pointer !
    Si ce pointer est un record qui contient des String ou tableau dynamiques, ils ne seront pas libérés !
    Veille à libérer en précisant le type de record !

    Pense aussi à nettoyer le Data en affectant nil, pour éviter une double libération !

    Sinon, ce qu'il y a dans Data c'est bien un Pointer, tu n'as pas juste stocker un integer ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 125
    Points : 78
    Points
    78
    Par défaut
    Si justement j'ai mis juste un integer... non, pas de record!!
    Que fais-je pour libérer alors MonTreeNonde.Data:=nil ?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 469
    Points : 24 905
    Points
    24 905
    Par défaut
    nil ou zéro !
    Tu n'as pas de pointeur, c'est un juste stockage brutal !
    Pense qu'avec le 64Bits et NativeInt, tu auras des surprises (risque d'erreur de compilation qui refuse de transtyper un type de longueur différente ?)
    Tu devrais allouer un pointer ou record contenant ton integer et le libérer !
    Cela se plus aisé à faire évoluer !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 125
    Points : 78
    Points
    78
    Par défaut
    Ok merci Shai...
    Toujours présent.. toujours aussi rapide... toujours aussi pertinent.. .toujours indispensable!
    Allez j'arrête les fleurs!

    A bientôt.
    Michael

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. libération de la mémoire pour un vector de pointeur
    Par bobo034 dans le forum Débuter
    Réponses: 7
    Dernier message: 13/08/2008, 17h06
  2. Libération mémoire; différents pointeurs
    Par icer dans le forum Débuter
    Réponses: 11
    Dernier message: 12/12/2007, 18h35
  3. Réponses: 5
    Dernier message: 14/03/2007, 14h56
  4. [VB]Libération de la mémoire
    Par seroa dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 12/10/2005, 11h52
  5. Libération de la mémoire
    Par gibet_b dans le forum Composants VCL
    Réponses: 3
    Dernier message: 30/06/2004, 12h02

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