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

access violation


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    �tudiant
    Inscrit en
    D�cembre 2005
    Messages
    163
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 163
    Par d�faut access violation
    slt !

    J'ai un acc�s violation , que je n'arrive pas � capter ! ( je sais m�me pas pourquoi il me le mets , mais je bafouille un peu)

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void enregistrement_fichier(Pays p[],int cmp)
    {
    	ofstream SortieFichierPays("donnees_bis.dat",ios::app);
     
    	if(!SortieFichierPays)
    	{
    		cerr<<" Ouverture du fichier impossible "<<endl;
    		exit(1);
    	}
    	SortieFichierPays<< p[cmp].p_nom_pays <<' '<<p[cmp].p_continent <<' '<< p[cmp].p_nb_population <<'\n';
    }
    voici la fonction appelante :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    void saisie_donnees(Pays str_p[])
    {		
     
    	int rep;
    	bool saisir_encore=true;
    	while(saisir_encore==true)
    	{
    		cout<<" nom du pays :\n";
    		cin>>str_p[compteur].p_nom_pays;
    		cout<<" continent :\n";
    		cin>>str_p[compteur].p_continent;
    		cout<<" nombre de sa population :\n";
    		cin>>str_p[compteur].p_nb_population;
    		cout<<"le taux d'analphabetes :\n";
    		cin>>str_p[compteur].p_taux_analphabete;
    		cout<<"le pourcentage d'universitaires \n";
    		cin>>str_p[compteur].p_pourcentage_universitaires;
    		cout" pbn ? \n";
    		cin>>str_p[compteur].p_pbn;
    		cout<<" voulez vous ajouter un pays ? 0/non 1/oui ";
    		cin>>rep;
    		enregistrement_fichier(str_p,compteur); // on enregistre le tout dans un fichier
    		if(rep==1)
    			compteur++;
    		else if(rep==0) 
    			saisir_encore = false;
    	}
     
     
    }
    ( en fait je veux une copie en m�moire , sinon il est clair que l'utilisation d'un tableau de struct est inutile )

    et voil� ma structure pays :

    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
     
    typedef struct 
    {
    	string p_nom_pays;
    	Date p_date[189];
    	string p_continent;
    	unsigned int p_nb_population;
    	//string p_langues_officielles[10];
    	float p_taux_analphabete;
    	float p_pbn;
    	float p_pourcentage_universitaires;
    	unsigned int nbre_langues;
     
     
    }Pays;
    ( bon , ya certaines donn�es que je n'utilise pas encore)

    Quel est le probl�me ?
    au moment de l'execution , juste apr�s le : voulez vous ajouter un pays , je tappe 0 et l� il me sort la fameuse dialog box de windows ><

    merci

  2. #2
    Membre confirm�
    Profil pro
    �tudiant
    Inscrit en
    D�cembre 2005
    Messages
    163
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 163
    Par d�faut
    re ,

    par la m�me occasion , quelles sont les principales raisons d'un access violation ( bon un pointeur mal initialis� , qui pointe vers un endroit zarbi en m�moire ? quoi encore ?) comment , se pr�munir contre �a ( mieux vaut pr�venir , que gu�rir :p) ?

  3. #3
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Potientiellement, on rencontre assez souvent aussi m�moire lib�r�e plusieurs fois, acc�s � un �l�ment en dehors des limites d'un tableau, m�lange new/delete[] ou new[]/delete...

    Dans ton cas :
    - d'o� vient compteur ?
    - d'o� vient str_p ?
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  4. #4
    Membre confirm�
    Profil pro
    �tudiant
    Inscrit en
    D�cembre 2005
    Messages
    163
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 163
    Par d�faut
    compteur est une variable globale ( j'ai honte de le dire , mais c'�tait vraiment pr tester ...) initialis� � 0.
    la fct appelante de saisie_donnees ( en l'occurence main()) contient la variable Pays p[189] , c un passage par valeur.

  5. #5
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    As-tu essay� d'utiliser un debugger ?

    Si le bug intervient lorsque tu as tap� 0, la ligne qui met le boxon peut se trouver dans la fonction ayant appel� saisie_donnees (donc main), puisque lorsque tu as tap� 0 �a stoppe la boucle et quitte imm�diatement la fonction.

    Sinon comme d'hab, essaye d'extraire un code minimal complet qui reproduit le probl�me.

  6. #6
    Membre confirm�
    Profil pro
    �tudiant
    Inscrit en
    D�cembre 2005
    Messages
    163
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 163
    Par d�faut
    le d�bogueur de VC++ , m'envoie sur une belle page de code en ASM , je vais essayer tripatouiller un peu plus cet outil qui pourrait surement m'aider !
    d'ailleurs , j'en profite pour vous demander si vous connaissez pas une bonne doc sur l'utilisation d'un d�bogueur ( celui de vc++ entre autres ) � part le fichier d'aide de l'ide , bien sur ... ?

  7. #7
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    le d�bogueur de VC++ , m'envoie sur une belle page de code en ASM
    Pour �a il y a la pile d'appels de fonctions (si elle n'est pas affich�e par d�faut tu la trouves dans un menu), qui te permet de remonter jusqu'� une fonction appartenant � ton code.

Discussions similaires

  1. Depuis EDI DELPHI : Access Violation
    Par powerlog dans le forum EDI
    R�ponses: 1
    Dernier message: 03/08/2005, 16h59
  2. Access violation avec fseek
    Par baleine dans le forum C
    R�ponses: 7
    Dernier message: 18/03/2005, 16h41
  3. R�ponses: 7
    Dernier message: 22/02/2005, 13h07
  4. [DELPHI][PROECEDURES STOCKES] Access violation
    Par All Jinx dans le forum Bases de donn�es
    R�ponses: 6
    Dernier message: 14/05/2004, 15h57
  5. R�ponses: 3
    Dernier message: 22/05/2002, 09h37

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