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 :

violation d'acces mémoire


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 67
    Par défaut violation d'acces mémoire
    bonjour,
    j'ai projet a faire en c++ builder 6 il est assez long et j'ai eu une violation d'acces memoir sur un benchmarck trés gros .. le programe se deroule 3 à la puissance 7 fois donc je vous laisse imaginer le temps d'execution..

    le probleme c'est que sur des petits exemples il n'y a aucun probleme mais sur celui là il me fait la tete !!

    "le projet a provoqué une classe d'exception EAccessviolation avec le message violation d'acces à l'adresse 00408301 dans le module tp.exe .ecriture de l'adresse 00000000 . processus stoppé utiliser pas à pas."

    le probleme c'est je ne sais pas du tout ou se trouve l'erreur ni comment faire pour la detecter vu que c'est trooop long avec le pas à pas !! ( il met 5minutes d'execution pour m'afficher l'erreur)

    pour info j'utilise principalement les DynamicArray .. s'il vous plait si quelqu'un a une idée pour savoir comment detecter la source du problème ..

    ( je ne peux pas poster le source vu sa longueur )

    merci

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Une violation d'accès est généralement du à un dépassement de pointeur, par exemple, si tu alloue un tableau de x pointeurs, et que tu fait une boucle de x+n sur ce tableau, tu ira écrire des données mémoires à des endroits ou tu ne devrais pas, du coup, lorsque ton programme doit accéder à ces adresses mémoires ce n'est plus une valeur attendu et tu as une violation d'accès.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 67
    Par défaut
    oui je sais mais ce que je n'arrive pas à comprendre c'est pourquoi sur un exemple petit tout marche bien et sur celui la ca ne marche pas , alors que c'est exaectement la meme chose il fais tout de la meme manière sauf qu'il c'est plus gros !!!

    et ya t'il un moyen de détecter ca , car je ne sais pas par ou commencer et vous imaginez le pas a pas !! impossible de voir...

    j'ai essayé tout à l'heur de faire du pas à pas comeme et au 4800 cas il m'a dit mémoire insuffisante ( alors que j'etait sur 1GO de ram ) koi faire svp ..

  4. #4
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Tout dépend de ton petit et de ton gros, si ta grandeur varie sur le nombre de boucle, tu ne dépasse pas forcement, si c'est la taille alloué, c'est que ça va écrire sur beaucoup plus d'espace ou il na pas le droit et du coup, il va toucher plus facilement des espace important pour le système ou l'appli.

    1Go de ram ça devrait tenir normalement, la limite et de 2Go par appli (limite fixé par windows) sauf pour le 64bit ou la c'est 4Go par appli, mais attention, il existe des "bug" sous bcb qui ne gère pas forcement la mémoire correctement et qui pourrait faire planté ton appli avant les 2Go, mais dans ce cas la tu aurai plutôt une erreur EEfface Error

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Par défaut
    Bonsoir,

    Pour détecter des violations d'accès, je te conseille de compiler ton projet avec 'Code Guard'.

    Pour l'activer, tu vas dans les propriétés de ton projet, tu sélectionnes l'onglet 'Code Guard', tu sélectionnes tous les 'Check box'.

    Puis, tu fais un build complet de ton application.

    Enfin, tu lances, et tu croises les doigts pour qu'il te détecte quelque chose

    Cordialement,

    Benjamin

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 67
    Par défaut
    j'ai fais comme tu as dis et la construction complète s'est faite normalement sans souci

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 67
    Par défaut
    j'ai meme scotché le bouton F8 et quand la violation a eu lieu j'ai trouvé le curseur la ou je l'ai laissé donc j'ai pas pu detecté ou exactement

    je suis desepéré et il faut que ca se regle !

    heeeeeeeelp !

Discussions similaires

  1. Violation d'accès mémoire TIdFTP
    Par ac/dc dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/08/2011, 11h59
  2. TStringList et Violation d'accès mémoire
    Par Weirdy dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2011, 10h23
  3. Violation accès mémoire
    Par BenjaminLustrement dans le forum C
    Réponses: 9
    Dernier message: 09/06/2006, 10h07
  4. Violation d'acces apres Execute
    Par SegmentationFault dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 10/08/2004, 16h23
  5. Violation d'accès apres Close
    Par SegmentationFault dans le forum Bases de données
    Réponses: 3
    Dernier message: 05/07/2004, 16h46

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