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

C++Builder Discussion :

Erreur étrange au moment de détruire la TForm


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 19
    Par défaut Erreur étrange au moment de détruire la TForm
    je travail sur un projet de soft d'archivage et encryption de données

    actuellement ca fonctionne presqu'a 100%, le programme est stable et ne produit pas d'erreurs durant l'éxécution...sauf...au moment de fermé le programme

    l'erreur est intermittente mais reste très fréquente, elle se présente sous 2 forme ->

    Exception première chance à 0x7C812A5B. Classe d'exception EAccessViolation avec message 'Violation d'accès à l'adresse 6B6E694C. Lecture de l'adresse 6B6E694C'. Processus Project_ftig.exe (0xAC4)
    Exception première chance à 0x7C812A5B. Classe d'exception EAccessViolation avec message 'Violation d'accès à l'adresse 004440C1. Ecriture de l'adresse 00000001'. Processus Project_ftig.exe (0x70C)
    et l'erreur survient a la ligne 936 de Form.hpp (parfois il m'indique cette ligne, d'autres fois il n'est pas question d'aucune lignes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }
    Je me suis dit que ca pouvais être un trucs avec une mauvais utilisation des varibales alloué dynamiquement, mais j'ai tout revérifier 2 fois, je ne dépasse pas ce qui m'est alloué, et je libère bien tout avant de fermé (enfin...je crois )

    j'ai lu ce topic
    http://www.developpez.net/forums/showthread.php?t=43954
    mais la solution ne s'applique pas exactement

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Peut-être que le programme cherche à détruire ou à utiliser un objet déjà détruit en amont.
    Ca dépend de l'objet et de son implication dans le mécanisme de fermeture de la fenêtre.

    Par exemple, il existe des possibilités de bugs lorsque l'on utilise un bitmap dans la OnResize et OnPaint de la form.
    Si ce dernier est libéré dans la OnClose, il devient indispensable d'effectuer (je serais presque tenté d'ajouter qu'il faut le faire systématiquement) les opérations suivantes :
    - après destruction du bitmap, rendre le pointeur NULL.
    - encadrer l'utilisation du bitmap avec un test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(Bitmap != NULL)
        {
        //le traitement
        }
    C'est juste un exemple de bug très difficile à résoudre, puisque, très logiquement, on peut se demander pourquoi soit la OnPaint soit la OnResize sont sollicitées juste après la OnClose !
    C'est vrai pour ma version BCB3 Pro mais celà ne l'est probablement plus dans les versions ultérieures !

    Il faut donc prendre du recul !

    A plus !

  3. #3
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Bonjour et bonne année,

    Je pense (sûrment) qu'il s'agit d'un accés à une adresse où elle à été libérer par le systéme. càd,
    supposant que dans un evenement quelconque tu déclare :
    et à la fin tu ne libére pas ce pointeur, alors le systéme vas faire de sort de le libérer pour toi, mais dans ton application tu fais la libération de ce pointeur dans OnDestroy par exemple, donc on a accés à une plage mémoire qui n'est plus allouée.

    Je te conseil d'utiliser CODEGUARD pour vérifier tout ça.

    bonne chance

  4. #4
    Membre averti
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 19
    Par défaut
    henderson-> effectivement j'utilise des Bitmap dans mon TMainMenu et des Bouton avec des images (TBitBnt), ansi que des TListImage pour stocker des icones système. je vais voir ce qu'il y a à faire avec tout ca

    kmaniche-> oui, j'ai révisé mon code 2 fois pour être sûr de ne pas avoir laissé un truc du genre. c'est possible qu'il y en ai encore..mais je crois que moins probable

    bref, je vais voir ce qui peut être fait avec mes Bitmap et je vous donnerais des nouvelles.

Discussions similaires

  1. Erreur"n'est pas un membre de Tform"
    Par amine198927 dans le forum C++Builder
    Réponses: 7
    Dernier message: 04/05/2008, 14h13
  2. [vector] erreur étrange
    Par Sp4ce dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 10/10/2007, 07h57
  3. Message d'erreur étrange sur mon serveur
    Par irnatene dans le forum Mandriva / Mageia
    Réponses: 3
    Dernier message: 28/11/2006, 14h20
  4. Message d'erreur étrange
    Par maitreblitosaure dans le forum Access
    Réponses: 10
    Dernier message: 29/06/2006, 11h45
  5. Erreur étrange sur recvfrom
    Par Gore dans le forum Développement
    Réponses: 2
    Dernier message: 17/02/2005, 12h22

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