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 :

tableau de pointeur debugage


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut tableau de pointeur debugage
    Bonjour

    J'ai des soucis concernant les tableaux de pointeur voici mon probleme

    Dans ma classe j'ai cette déclaration
    byte ** ADR;

    et dans mon constructeur j'ai ça
    * ADR = new byte[0x10000];
    ca compile nikel mais a l'execution j'ai une segmentation fault

    et c la que je pige pas

    pour le contexe ce tableau de pointeur pointera sur plusieurs tableau de byte

    PS :byte n'est qu'un simple char.

    merci pour votre aide

  2. #2
    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
    Tu n'a pas initialisé le pointeur ADR, au moment où tu l'utilises (* ADR) il pointe sur n'importe quoi.

    Un peu de bonne lecture :
    http://c.developpez.com/faq/cpp/?pag..._new_array_dim
    http://c.developpez.com/faq/cpp/?page=STL#STL_vector

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut
    ce que je fais c juste creer le tableau de pointeur apres tout le reste du programme est en commentaire donc je ne comprend a koi sert une initialisation ou bien peut etre tu veu que chaque pointeur de ADR pointe sur null?

  4. #4
    Membre averti
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut
    j'ai initialiser ADR mais j'ai toujour segmentation fault

    voici mon code

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    int main()
    {
    	z80 * cpu = new z80();
    	return 0;
    }
     
    dans le z80.h
     
    class z80
    {
    	public :
     
    	//registres generaux
     
    		registre AF;
    		registre BC;
    		registre DE;
    		registre HL;
     
    	//registres mirroirs
     
    		registre * mAF;
    		registre * mBC;
    		registre * mDE;
    		registre * mHL;
     
    	//registres d'index
     
    		registre IX;
    		registre IY;
     
    	//registres speciaux
     
    		registre PC;
    		registre SP;
    		registre IR;
     
    	//memoires
     
    		byte ** ADR;
    		memory * ROM;
    		memory * RAM;
     
    		z80();
    		~z80();
    		bit * getFlag();
    		void setPointers();
    		void setSMSAdr();
    		byte * getRAM();
    };
     
    et dans z80.cc
     
    z80::z80()
    {
    	printf("coucou");
    	* ADR = new byte[0x10000];
    	for (int i=0;i<=0x10000;i++)
    		ADR[i] = 0;
    	/*ROM = NULL;
    	setPointers();*/
    }
    [/b]

  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
    Tu initialises le pointeur pointé par ADR, mais ADR lui-même n'est toujours pas initialisé... D'ailleurs pourquoi deux niveaux d'indirection si ce n'est que pour un tableau à une dimension ?

  6. #6
    Membre averti
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut
    tu veux dire que je dois faire

    for(...)
    ADR = new byte[...]

    peut etre je me trompe mais ce sont pa des adresses de memoire que je pourrai stocker mais des données

    ce que je veux c que chaque case de mon tableau ADR pointe sur un tableau de byte

    merci de m'eclairer

  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
    Commence déjà par lire ce que je t'ai indiqué... Ca répondra à toutes tes questions


  8. #8
    Membre averti
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut
    j'ai résolu le probleme

    je devai ecrire

    ADR = new byte * [0x10000];

    a la place de ca

    * ADR = new byte[0x10000];

    c'était pas une histoire d'initialisation
    en tout cas merci pour ton aide loulou24

  9. #9
    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
    c'était pas une histoire d'initialisation
    Si tu le dis...

    Et n'oublie pas d'allouer tes tableaux de byte, maintenant que tu as alloué ton tableau de tableaux.

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

Discussions similaires

  1. Tableau de pointeur de fonction
    Par Gryzzly dans le forum C
    Réponses: 7
    Dernier message: 31/12/2005, 10h47
  2. Tableau de pointeurs sur objets
    Par bassim dans le forum C++
    Réponses: 11
    Dernier message: 13/12/2005, 19h45
  3. [GCC] Tableau de pointeurs pour accès multiples en asm
    Par Flo. dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 12/12/2005, 08h47
  4. tableau de pointeurs
    Par seal3 dans le forum C++
    Réponses: 7
    Dernier message: 01/11/2005, 20h51
  5. Tableau de pointeurs de fonctions
    Par Alp dans le forum C++
    Réponses: 7
    Dernier message: 29/10/2005, 13h19

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