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 :

Access violation sur un new


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Par défaut Access violation sur un new
    Bonjour à tous,

    J'ai un problème lorsque je tente d'allouer une variable avec l'opérateur "new" ; le message d'erreur suivant apparaît :
    "Project "C:\...\....exe faulted with message : 'access violation at 0x... : write of adress 0x...' Process stoped. Use Step or Run to continue."

    Voici le morceau de code où l'erreur intervient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    type_enr *TabEnr = 0;
    TabEnr = new type_enr[tabCartes[numCarte].NbChamps];
    A l'instant où l'erreur intervient, la variable "tabCartes[numCarte].NbChamps" contient une valeur censée (105).

    En espérant que vous pourrez m'aider, car je dois dire que je ne vois absolument pas d'où cela vient. C'est la première fois que j'ai une telle erreur sur un "new". Pourtant j'en ai fait des allocations mémoires...

    Cordialement !

  2. #2
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Essayes de passer par une variable pour la taille de ton tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    type_enr *TabEnr = 0;
    int taille_tab = tabCartes[numCarte].NbChamps;
    TabEnr = new type_enr[taille_tab];
    Je ne sais pas si cela va solutionner les choses mais à première vue, c'est le seul truc qui pourrait gêner...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Par défaut
    Merci pour ta réponse bakaneko, mais cela n'a pas résolu mon problème... Même en remplaçant directement la dimension de mon tableau par une valeur constante (ici 105), j'ai toujours cette erreur...

    Je précise aussi que type_enr est une structure définit comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    struct type_enr
    {
    	char nom[20];
    	char valx[15];
    	char valy[15];
    	char numile[3];
    	char type[2];
    	char gr1[5];
    	char gr2[5];
    	char gr3[5];
    	char attribut[40];
    };
    Tout ce qui a de plus banal...

  4. #4
    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,

    essaye ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    type_enr *TabEnr = new type_enr[105];
    bon courage ...

  5. #5
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    bonsoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    type_enr *TabEnr = 0;
    cette expression n'est pas correcte car l'adresse du ptr est égale à 0 et non pas son contenu
    l'expression correcte est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    type_enr *TabEnr = NULL;
    TabEnr = new type_enr[tabCartes[numCarte].NbChamps];
    cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Par défaut
    Merci à tous pour vos réponses,

    Malheureusement, cela n'a toujours pas réglé mon problème... Je dois dire que je suis complètement perdu...

    Si quelqu'un a une idée je suis preneur !!

    Cordialement.

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

Discussions similaires

  1. Access violation sur destructeur TFrame avant lancement Main
    Par dibadoubi dans le forum C++Builder
    Réponses: 0
    Dernier message: 08/12/2012, 13h57
  2. Access violation sur une string
    Par Nekkro dans le forum C++
    Réponses: 11
    Dernier message: 23/01/2012, 08h41
  3. Access violation sur dsnap140.bpl
    Par Ben_Le_Cool dans le forum Langage
    Réponses: 4
    Dernier message: 29/07/2011, 20h06
  4. Réponses: 5
    Dernier message: 27/01/2009, 10h58
  5. Access Violation sur un delete
    Par devroot dans le forum C++
    Réponses: 11
    Dernier message: 29/09/2007, 23h22

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