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 C++ Discussion :

Problème avec New Delete TComponentList


Sujet :

Langage C++

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    502
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 502
    Par défaut Problème avec New Delete TComponentList
    bjr

    j'ai condé une fonction permettant de positionner des TControl dans un TPanel. Pour ce faire je place les composants à positionner dans un TComponentList que j'alloue et libère ensuite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TComponentList * List;
    List=new TComponentList;
    List->OwnsObjects=false;
    List->Add(EdSearchNom);
    List->Add(EdSearchPrenom);
     
    AutoCrossControl(List,PnlTop,1,0.9,Rect(50,10,PnlTop->Width/2,10));
    List->Clear();
    delete List;
    La fonction AutoCrossControl exécute des écritures dans les propriétés Left et Top des composants (en plus de la lecture d'autres propriétés).

    Cela fonctionne mais quand je quitte l'application j'ai une exception qui n'est pas toujours la même mais qui laisse à penser que les destructeurs de formes sont perturbés.

    Mon code est il en apparence conforme ?

    Quelqu'un aurait il idée du problème ?

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 545
    Par défaut
    Bonjour,

    remarque sans rapport avec la question : pourquoi avoir utilisé un pointeur sur un TComponentList et non directement un TComponentList ? cela vous éviterai le new, le delete et les ->

    pour le reste, si vous êtes sous Linux avec un processeur Intel je vous recommande GRANDEMENT d'utiliser valgrind pour détecter les problèmes d'allocation/libération/non libération/lecture/écrire en mémoire.

    valgrind est et plus encore ...
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    502
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 502
    Par défaut
    Je suis sous Windows

    Si j'alloue dynamiquement un TComponentList c'est parce que cette fonction (AutoCrossControl) est appelée depuis plusieurs Formes situées dans des unités distinctes et que je veux éviter de devoir allouer en statique autant de TComponentList que d'unités. Il y a plus de 60 formes dans le projet.

    Mais j'ai trouvé l'origine du problème (confirmé ensuite avec CodeGuard). Une allocation interne à la fonction était débordée...classique

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

Discussions similaires

  1. [MySQL] Problème avec delete et recup variable
    Par bromlecornu dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/05/2007, 14h44
  2. problème avec un new[]
    Par f56bre dans le forum C++
    Réponses: 25
    Dernier message: 13/11/2006, 23h09
  3. [VB]problème avec DELETE
    Par jogu dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/01/2006, 10h53
  4. Problème avec new
    Par Azharis dans le forum C++
    Réponses: 18
    Dernier message: 27/04/2005, 17h45

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