Pointer de pointer de pointer [C] - C - Programmation
Marsh Posté le 07-04-2013 à 20:25:20
Si, comme je l'imagine, votre variable grille_sec est une double pointeur vers une GSec, ou un pointeur de tableaux, alors (*grille_sec[j]) est de type GSec.
Dans ce cas, (*s[k]) n'a pas de sens car l'attribut S est un pointeur simple sur Solution et vous faites un double déréférencement, via le (*) et le [k].
C'est là qu'est votre erreur.
Bonne continuation !
Edit : Mais le message ne colle pas trop, il y a peut être autre chose, mais il faudrait avoir la déclaration exacte de la variable grille_sec pour valider.
Marsh Posté le 07-04-2013 à 21:14:18
Merci pour cette réponse voici la déclaration de grille_sec :
Code :
|
Dans un premier temps, j'avais alloué les char *p avec
Code :
|
Mais dans ce cas, j'obtiens un malloc() : memory corruption
J'ai donc pensé que l'accés au char *p était incorrect.
Je suis un peu bloqué
Marsh Posté le 07-04-2013 à 21:55:10
Re-bonjour !
Vous n'allouez qu'une seule dimension du tableau grille_sec, et vous déréférencez deux fois, cela ne peut pas marcher.
Dans la ligne 3, vous allouez grille_sec comme un tableau de N pointeurs, mais ensuite vous déréférencez ces N pointeurs (ligne 10) sans avoir alloué la mémoire correspondante.
Pourquoi faire un double pointeur, vu que vous n'utilisez qu'une dimension sur les deux ?
Bon courage !
Edit : si je comprends bien, l'erreur que vous obtenez ("malloc : memory corruption" ) est une erreur à l'exécution, ce qui n'a rien à voir avec une erreur à la compilation : La première indique que vous avez mal géré vos pointeurs dans le programme, tandis que la deuxième indique une erreur de syntaxe (pour simplifier) dans votre code. Dans le premier cas, vous accédez mal à vos valeurs d'un point de vue dynamique, "fonctionnel", presque ou vous ne respectez pas les cycles de vie (allocation / utilisation / désallocation) de vos objets / pointeurs.
Marsh Posté le 07-04-2013 à 22:22:23
Re-bonjour,
Merci une nouvelle fois pour cette réponse
Mon programme va utiliser arete pointer vers GSec, c'est pour cela que j'ai pensé passer par un double pointer.
Je viens de comprendre grâce à vous qu'il fallait allouer les grille_sec[i] !
Merci pour votre aide !
Marsh Posté le 07-04-2013 à 17:38:41
J'ai défini deux structure dans mon prog :
J'ai créé un double pointer et je souhaiterais avoir accès à tous les p depuis celui ci.
J'ai essayé ceci :
Après avoir alloué les deux structure précédente convenablement, mais code::blocks me renvoie une erreur à la compilation : expected identifier befor '(' token
Est-ce qu'une âme charitable pourrait m'expliquer mon erreur ?
Merci !
---------------
Topic de ventes: http://forum.hardware.fr/hfr/Achat [...] 3018_1.htm :o