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 :

pchar et Tlist à la destruction des pchar


Sujet :

Langage Delphi

  1. #1
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut pchar et Tlist à la destruction des pchar
    Bonjour, j'ai un soucis avec une liste de pchar. Je les crées avec StrAlloc et les stocke dans une Tlist. le problème vient lorsque j'essaie de libérer les pointeurs avec strdispose. j'ai une exception de type EAccesViolation.

    Quelqu'un pourrait me dire pourquoi .

    voici le code

    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
    procedure TForm1.Button1Click(Sender: TObject);
    Var
      P: pchar;
    begin
    P := Stralloc( 6);
    P := 'Hello';
    fList.Add(P);
    end;
     
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    Var
      Index : Integer;
      P : Pchar;
    begin
    while fList.Count > 0 do
      Begin
      P := fList.Extract(fList.Last); 
      strdispose(P); //<----  Problème
      end;
    fList.Free;
    end;
    fList contient bien les pointeurs et ceux ci pointent bien sur les chaines de caractères.

  2. #2
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       P:= StrNew(PChar('hello'));

  3. #3
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Ca marche.

    merci beaucoup

  4. #4
    Membre averti
    Avatar de delphichem
    Inscrit en
    Octobre 2002
    Messages
    280
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 280
    Points : 338
    Points
    338
    Par défaut
    Pourquoi ne pas vider la fList directement?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while fList.Count > 0 do
      Begin
        fList.Delete(0);
      end;

  5. #5
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Citation Envoyé par delphichem
    Pourquoi ne pas vider la fList directement?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while fList.Count > 0 do
      Begin
        fList.Delete(0);
      end;
    sur les Tlist, delete et extract sont équivalents : supprimer le pointeur de la liste. par contre, çà ne libère pas la mémoire allouée au pointeur. si on ne le libère pas lui aussi, on a des fuites mémoire.

  6. #6
    Membre averti
    Avatar de delphichem
    Inscrit en
    Octobre 2002
    Messages
    280
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 280
    Points : 338
    Points
    338
    Par défaut
    Ok Merci pour l'info

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/09/2009, 18h51
  2. Destruction des objets de récupération de données
    Par aloisio11 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 15/10/2007, 17h39
  3. Réponses: 8
    Dernier message: 01/08/2007, 17h00
  4. Réponses: 17
    Dernier message: 05/06/2006, 12h20
  5. Conditions de destruction des instances de classes
    Par elvivo dans le forum Général Python
    Réponses: 4
    Dernier message: 29/12/2004, 17h16

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