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 :

Problème de pointeurs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Par défaut Problème de pointeurs
    Bonjour à tous,
    Je suis entrain d'utiliser des listes doublement chaînées sous le langage C, mon problème est que en essayant de lire le contenu d'un élément de la liste , un message parlant de violation d'accès surgit à l'écran. Bon, j'ai fait l’exécution pas à pas afin de localiser le problème et là j'ai été stupéfaite le pointeur "suivant" d'un élément en cours de lecture ne pointe plus sur l'adresse qu'il fallait pointer sur, autrement dit, lors de l'insertion dans la liste on a affecté à ce pointeur suivant l'adresse x, mais au moment de parcours de la liste j'ai trouvé que suivant contient l'adresse y, qui en plus, elle est indéfinie (??) donc ne contient ni info, ni suivant,... et c'est pour cette raison y a le message de violation d'accès.. Mon problème est comment ça peut arriver qu'une adresse change toute seule, c'est vraiment bizarre et je trouve ni explication et ni solution et le pire que ne peux pas terminer l'exécution de mon programme.
    je me demande alors qui quelqu'un d'entre vous a vécu un cas semblable ou qu'il a une idée sur comment ça peut être résolu, je serais très reconnaissante.
    à titre d’information j'utilise la fonction malloc pour allouer la variable dynamique qui sera pointée par ptr
    ptr= (type*)malloc(sizeof(type)) et je verifie à chaque fois que l'allocation est faite avec succès:
    if(ptr= (type*)malloc(sizeof(type)) !=NULL) et j'ai pas eu de problème d'allocation
    Merci d'avance pour toute aide ou information qui peut m'éclaircir .

  2. #2
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Cela peut arriver si ton ordinateur c'est un MAC, plus sérieusement cela ne m'étonne pas en voyant comment est-ce que tu vérifies l'allocation par exemple (sans plus de code c'est difficile de deviner):
    Citation Envoyé par saloua Voir le message
    ptr= (type*)malloc(sizeof(type)) et je verifie à chaque fois que l'allocation est faite avec succès:
    if(ptr= (type*)malloc(sizeof(type)) !=NULL) et j'ai pas eu de problème d'allocation
    Je t'invite à revoir la priorité et associativité des opérateurs.

    Bon courage.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par saloua Voir le message
    le pointeur "suivant" d'un élément en cours de lecture ne pointe plus sur l'adresse qu'il fallait pointer sur, autrement dit, lors de l'insertion dans la liste on a affecté à ce pointeur suivant l'adresse x, mais au moment de parcours de la liste j'ai trouvé que suivant contient l'adresse y, qui en plus, elle est indéfinie (??) donc ne contient ni info, ni suivant,...
    ça en général c'est le signe qu'on a écrasé quelque chose entre...

    Du style tu as alloué une certaine taile et tu as copié dedans plus que tu ne pouvais...

    (du style tu as oublié la place du '\0' pour une chaîne)..






    Citation Envoyé par saloua Voir le message
    if(ptr= (type*)malloc(sizeof(type)) !=NULL)
    Ici pour plus de précision et de certitude il manque une parenthèse :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    if( (ptr= (type*)malloc(sizeof(type))) !=NULL)

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Par défaut
    Bonjour,
    merci pour vos réponses. en fait, j'utilise un hp et non un mac.
    le code que j'utilise dans mon programme pour s'assurer du succès de l'allocation est en fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if((evptrdoc=(EVICDOC*)malloc(sizeof(EVICDOC)))==NULL)
                    {
                    ShowMessage("echec d'allocation de evptrdoc");
                    exit (1);
                    }
    à mon sens y a aucun problème au niveau de ce code
    merci

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par saloua Voir le message
    à mon sens y a aucun problème au niveau de ce code
    merci



    Quand un programme crashe, en particulier par rapport à la mémoire c'est qu'il y a un problème au niveau du code ...


    Maintenant il faut trouver où...

    Il est extrêmement rare que cela vienne de la machine (ça peut, mais dans 99.99999999% des cas ça vient du programme..)

    Alors plutôt que de le prendre de haut, montre un peu plus de code, et on pourra t'aider...

  6. #6
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Par défaut
    Merci pour votre réponse,
    oui je suis convaincue que ça provient du programme et non de la machine et plus précisément ça vient de moi en tant que "programmeur",
    voilà une partie du code source où j'utilise

    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
    ...
    if(! exist_evicted(ptrdoc->did,ptrdoc->dsize,ptrdoc->type))
    {
     if((evptrdoc=(EVICDOC*)malloc(sizeof(EVICDOC)))==NULL)
                    {
                    ShowMessage("echec d'allocation de evptrdoc");
                    exit (1);
                    }
                     evptrdoc->did=ptrdoc->did; // did= document identifier
                     evptrdoc->type=ptrdoc->type;
                     evptrdoc->nbaccess1=ptrdoc->nbaccess1;
    		 evptrdoc->Dprec=NULL;
                     evptrdoc->Dsucc=NULL;
    
    evict_insert(evptrdoc,ptrdoc->dsize);
    }
    ...

    dans le code ci-dessus, je teste si l'objet dont l'identifiant est ptrdoc->did existe dans la liste des objets "evicted" . si il n'existe pas, je procède à son insertion. ci après le code complet de l'insertion, vous allez remarquer que j'utilise plusieurs liste. en fait j'ai des objets de différents types (6) et pour accélérer la recherche j'ai créé 6 listes doublement chainées, ainsi, ledhead1 et ledtail1 veulent dire respectivement list of evicted document head du type 1 et list of evicted document tail du type 1. pour le type 3, j'ai encore fragmenté selon la taille des objets insérés, vu que le nombre des objets de type 3 est extrêmement grand.


    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    int __fastcall TForm1::exist_evicted (unsigned long x, double s,int t)
     {
            int test=0;
            EVICDOC* ptrdoc=NULL;
            switch(t)
            {
            case 1: ptrdoc=ledhead1;break;
            case 2: ptrdoc=ledhead2;break;
            case 3: {if (s <10000)
                    ptrdoc=ledhead31;
                    else
                    if (s <100000)
                    ptrdoc=ledhead32;
                    else
                    ptrdoc=ledhead33;}
                    break;
            case 4: ptrdoc=ledhead4;break;
            case 5: ptrdoc=ledhead5;break;
            case 6: ptrdoc=ledhead6;break;
            }
     
         while ((ptrdoc!=NULL)&&(!test))
            {
     
     
                    if (x==ptrdoc->did)
                    {
                    test=1;
                    }
                    else
                    {
                    ptrdoc=ptrdoc->Dsucc;
                     }
            }
     
            return (test);
     
    }
     
     
    void __fastcall TForm1:: evict_insert (EVICDOC*ptrdoc,double s)
    {
     
                            switch(ptrdoc->type)
            {
            case 1:
                          if ((ledhead1== NULL)&& (ledtail1== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
             	                ledhead1= ledtail1=ptrdoc;
                            }
    	                else
    	                  {
                            ptrdoc->Dprec=ledtail1;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail1->Dsucc= ptrdoc;
     
    	                ledtail1= ptrdoc;
    	                }
                            break;
             case 2: if ((ledhead2== NULL)&& (ledtail2== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
    	                ledhead2= ledtail2=ptrdoc;
                            }
    	                else
    	                {
                            ptrdoc->Dprec=ledtail2;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail2->Dsucc= ptrdoc;
    	                ledtail2= ptrdoc;
    	                }
                            break;
             case 3:
     
                           if(s <10000)
                          {
     
                                   if ((ledhead31== NULL)&& (ledtail31== NULL) )
                                    {
                                    ptrdoc->Dsucc=NULL;
    	                        ptrdoc->Dprec=NULL;
    	                        ledhead31= ledtail31=ptrdoc;
                                    }
    	                        else
    	                        {
                                  ptrdoc->Dprec=ledtail31;
                                    ptrdoc->Dsucc=NULL;
                                    ledtail31->Dsucc=ptrdoc;
                                    ledtail31= ptrdoc;
     
    	                        }
     
                            }
                            else
                            if(s<100000)
                            {
                            if ((ledhead32== NULL)&& (ledtail32== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
    	                ledhead32= ledtail32=ptrdoc;
                            }
    	                else
    	                {
                            ptrdoc->Dprec=ledtail32;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail32->Dsucc= ptrdoc;
    	                ledtail32= ptrdoc;
    	                }
                            }
                            else
                            {
                            if ((ledhead33== NULL)&& (ledtail33== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
    	                ledhead33= ledtail33=ptrdoc;
                            }
    	                else
    	                {
                            ptrdoc->Dprec=ledtail33;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail33->Dsucc= ptrdoc;
    	                ledtail33= ptrdoc;
    	                }
                            }
                            break;
            case 4: if ((ledhead4== NULL)&& (ledtail4== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
    	                ledhead4= ledtail4=ptrdoc;
                            }
    	                else
    	                {
                            ptrdoc->Dprec=ledtail4;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail4->Dsucc= ptrdoc;
    	                ledtail4= ptrdoc;
    	                }
                            break;
            case 5: if ((ledhead5== NULL)&& (ledtail5== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
    	                ledhead5= ledtail5=ptrdoc;
                            }
    	                else
    	                {
                            ptrdoc->Dprec=ledtail5;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail5->Dsucc= ptrdoc;
    	                ledtail5= ptrdoc;
    	                }
                            break;
            case 6: if ((ledhead6== NULL)&& (ledtail6== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
    	                ledhead6= ledtail6=ptrdoc;
                            }
    	                else
    	                {
                            ptrdoc->Dprec=ledtail6;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail6->Dsucc= ptrdoc;
    	                ledtail6= ptrdoc;
    	                }
                             break;
     
     
            }
            return;
    }
    j'espère avoir été claire et merci d'avance

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par saloua Voir le message
    j'espère avoir été claire et merci d'avance
    Pes vraiment mais merci par contre entoure ton code des balises code (tu sélectionnes le texte puis appuie sur le signe #), ça sera plus clair..

    Et d'abord 2 conseils :

    • Primo quand tu testes quelque chose, teste-le d'après sa valeur :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      while ((ptrdoc!=NULL)&&(!test))
      serait avantageusement remplacé par :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      while ((ptrdoc!=NULL)&&(test == 0))

      Et d'autre part par exemple ici test n'est pas initialisé


    • D'autre part, tu ferais bien de "factoriser" tes tests en cas de nullité dans la routine insert, ça rendrait le code beaucoup plus clair, tes if ( == NULL && == NULL), les mettre une seule fois...



    Pour l'instant, je n'ai pas envie de regarder plus loin..

    Mets les balises de code stp...

  8. #8
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Par défaut
    Merci pour votre réponse,
    je suis novice sur ce forum

    voilà les bouts du code source

    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
     
    if(! exist_evicted(ptrdoc->did,ptrdoc->dsize,ptrdoc->type))
    {
     if((evptrdoc=(EVICDOC*)malloc(sizeof(EVICDOC)))==NULL)
                    {
                    ShowMessage("echec d'allocation de evptrdoc");
                    exit (1);
                    }
                     evptrdoc->did=ptrdoc->did; // did= document identifier
                     evptrdoc->type=ptrdoc->type;
                     evptrdoc->nbaccess1=ptrdoc->nbaccess1;
    		 evptrdoc->Dprec=NULL;
                     evptrdoc->Dsucc=NULL;
     
    evict_insert(evptrdoc,ptrdoc->dsize);
    }
    ...
    la variable test est initialisé à 0 : 3 ème ligne

    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
    int __fastcall TForm1::exist_evicted (unsigned long x, double s,int t)
     {
            int test=0;
            EVICDOC* ptrdoc=NULL;
            switch(t)
            {
            case 1: ptrdoc=ledhead1;break;
            case 2: ptrdoc=ledhead2;break;
            case 3: {if (s <10000)
                    ptrdoc=ledhead31;
                    else
                    if (s <100000)
                    ptrdoc=ledhead32;
                    else
                    ptrdoc=ledhead33;}
                    break;
            case 4: ptrdoc=ledhead4;break;
            case 5: ptrdoc=ledhead5;break;
            case 6: ptrdoc=ledhead6;break;
            }
     
         while ((ptrdoc!=NULL)&&(!test))
            {
     
     
                    if (x==ptrdoc->did)
                    {
                    test=1;
                    }
                    else
                    {
                    ptrdoc=ptrdoc->Dsucc;
                     }
            }
     
            return (test);
     
    }
    l'erreur se produit en exécutant: if (x==ptrdoc->did) car ptrdoc à un certain moment et je ne sais pas par quel effet "de magie" contient une adresse qui n'a jamais été affectée à une variable dynamique de la liste (j'ai bien vérfié que au moment de l'insertion l'adresse qui est affectée est une adresse différente de celle lue , pour une certaine variable, lors du parcours de la liste.
    est ce que l'insuffisance de la mémoire peut provoquer un tel comportement, mais si la mémoire n'est plus suffisante comment il arrive que l'allocation se fait avec succès!!!!!

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    void __fastcall TForm1:: evict_insert (EVICDOC*ptrdoc,double s)
    {
     
                            switch(ptrdoc->type)
            {
            case 1:
                          if ((ledhead1== NULL)&& (ledtail1== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
             	                ledhead1= ledtail1=ptrdoc;
                            }
    	                else
    	                  {
                            ptrdoc->Dprec=ledtail1;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail1->Dsucc= ptrdoc;
     
    	                ledtail1= ptrdoc;
    	                }
                            break;
             case 2: if ((ledhead2== NULL)&& (ledtail2== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
    	                ledhead2= ledtail2=ptrdoc;
                            }
    	                else
    	                {
                            ptrdoc->Dprec=ledtail2;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail2->Dsucc= ptrdoc;
    	                ledtail2= ptrdoc;
    	                }
                            break;
             case 3:
     
                           if(s <10000)
                          {
     
                                   if ((ledhead31== NULL)&& (ledtail31== NULL) )
                                    {
                                    ptrdoc->Dsucc=NULL;
    	                        ptrdoc->Dprec=NULL;
    	                        ledhead31= ledtail31=ptrdoc;
                                    }
    	                        else
    	                        {
                                  ptrdoc->Dprec=ledtail31;
                                    ptrdoc->Dsucc=NULL;
                                    ledtail31->Dsucc=ptrdoc;
                                    ledtail31= ptrdoc;
     
    	                        }
     
                            }
                            else
                            if(s<100000)
                            {
                            if ((ledhead32== NULL)&& (ledtail32== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
    	                ledhead32= ledtail32=ptrdoc;
                            }
    	                else
    	                {
                            ptrdoc->Dprec=ledtail32;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail32->Dsucc= ptrdoc;
    	                ledtail32= ptrdoc;
    	                }
                            }
                            else
                            {
                            if ((ledhead33== NULL)&& (ledtail33== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
    	                ledhead33= ledtail33=ptrdoc;
                            }
    	                else
    	                {
                            ptrdoc->Dprec=ledtail33;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail33->Dsucc= ptrdoc;
    	                ledtail33= ptrdoc;
    	                }
                            }
                            break;
            case 4: if ((ledhead4== NULL)&& (ledtail4== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
    	                ledhead4= ledtail4=ptrdoc;
                            }
    	                else
    	                {
                            ptrdoc->Dprec=ledtail4;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail4->Dsucc= ptrdoc;
    	                ledtail4= ptrdoc;
    	                }
                            break;
            case 5: if ((ledhead5== NULL)&& (ledtail5== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
    	                ledhead5= ledtail5=ptrdoc;
                            }
    	                else
    	                {
                            ptrdoc->Dprec=ledtail5;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail5->Dsucc= ptrdoc;
    	                ledtail5= ptrdoc;
    	                }
                            break;
            case 6: if ((ledhead6== NULL)&& (ledtail6== NULL) )
    	                {
    	                ptrdoc->Dsucc=NULL;
    	                ptrdoc->Dprec=NULL;
    	                ledhead6= ledtail6=ptrdoc;
                            }
    	                else
    	                {
                            ptrdoc->Dprec=ledtail6;
    	                ptrdoc->Dsucc=NULL;
    	                ledtail6->Dsucc= ptrdoc;
    	                ledtail6= ptrdoc;
    	                }
                             break;
     
     
            }
            return;
    }
    voila

Discussions similaires

  1. Problème de pointeurs..embrouillé
    Par Frenchy dans le forum C++
    Réponses: 11
    Dernier message: 10/03/2005, 16h33
  2. Problème de pointeur avec un TQuery
    Par Oluha dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/01/2005, 13h57
  3. Problème de pointeur
    Par toma_lille dans le forum C++
    Réponses: 1
    Dernier message: 07/12/2004, 21h26
  4. [MFC] Problème de pointeur !!
    Par acastor dans le forum MFC
    Réponses: 7
    Dernier message: 19/03/2004, 15h50
  5. TBitmap et problèmes de pointeurs...
    Par benj63 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/07/2003, 13h39

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