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

Langage Delphi Discussion :

Mémoire, test d'assignation et destruction d'objet


Sujet :

Langage Delphi

  1. #1
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut Mémoire, test d'assignation et destruction d'objet
    Bonjour à tous.

    Ce matin, j'ai du me plonger dans un code qu'un ami m'a fait passer car il a constaté un bug. Après verification, voici le code incriminé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var frmOuvrageLst : TfrmOuvrageList;
    if (Not Assigned(frmOuvrageLst)) then
    begin
      frmOuvrageLst := TfrmOuvrageList.Create(Nil);
      //section d'initialisation des paramètres de frmOuvrageLst
      frmOuvrageLst.show;
    end
    else
    begin
      frmOuvrageLst.Release;
      frmOuvrageLst := Nil; //Sans ce code, la 3ème execution ne marche pas
    end
    La question est : après Release, frmOuvrageLst contient quoi exactement car dans l'aide de Delphi
    Utilisez la méthode Release pour détruire la fiche et libérer la mémoire associée.
    Merci
    On progresse .....

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2002
    Messages : 1 289
    Points : 1 940
    Points
    1 940
    Par défaut
    Quand on libère un objet, seul l'espace mémoire associé est libéré. La référence pointe toujours sur cet espace mémoire "vide".

    Donc si on doit tester, soit utiliser FreeAndNil pour les objets soit un Release (à cause du traitement des messages) puis une affectation à nil pour les form.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2022

  3. #3
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Citation Envoyé par Linkin Voir le message
    Quand on libère un objet, seul l'espace mémoire associé est libéré. La référence pointe toujours sur cet espace mémoire "vide".

    Donc si on doit tester, soit utiliser FreeAndNil pour les objets soit un Release (à cause du traitement des messages) puis une affectation à nil pour les form.
    Effectivement j'avais corriger le code pour assigner Nil à l'objet.
    Donc l'assignation à nil d'un pointeur veut dire que le pointeur ne pointe sur aucune zone mémoire.
    On progresse .....

  4. #4
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2002
    Messages : 1 289
    Points : 1 940
    Points
    1 940
    Par défaut
    C'est ça.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2022

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/11/2007, 01h52
  2. Réponses: 5
    Dernier message: 27/03/2007, 09h51
  3. Destruction d'objet (.free) >> EAccessViolation
    Par monstroplante dans le forum Langage
    Réponses: 7
    Dernier message: 08/11/2005, 20h19
  4. destruction d'objets dans un vecteur
    Par titouille dans le forum C++
    Réponses: 12
    Dernier message: 28/07/2005, 19h20
  5. [débutante][Concept] Destruction d'objet, mode d'emploi?
    Par skea dans le forum Général Java
    Réponses: 4
    Dernier message: 12/06/2004, 21h48

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