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 à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 11
    Points
    11
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    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 à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 11
    Points
    11
    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 à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 11
    Points
    11
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    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 à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 11
    Points
    11
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Commence déjà par lire ce que je t'ai indiqué... Ca répondra à toutes tes questions


  8. #8
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 11
    Points
    11
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    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