Pointeurs en paramètre dans GTK (C)

Résolu/Fermé
cap'tain sheeps Messages postés 447 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 1 octobre 2014 - 31 mai 2011 à 15:53
cap'tain sheeps Messages postés 447 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 1 octobre 2014 - 31 mai 2011 à 16:52
Bonjour,
J'ai un problème lors du passage de mon pointeur en paramètre d'une fonction, et plus particulièrement quand je modifie la valeur dans mon pointeur. Voici mon code:
int traitementFichierDesConnections(char * cheminFichierFil, typeTableauConnection tableauConnections, typeTabManuel tabManuel, typeTableauPConnection tableauPConnections, int *pnb_exceptions);
[...]
void TraitementBoutonGen(GtkWidget* pWidget, gchar* cheminFichierFil, gchar* cheminFichierPro, Continuite continuite, Isolement isolement)
{
[...]
int *pnb_exceptions;
//*pnb_exceptions = 0; ligne que je suis obligé de mettre en commentaire
nb_connections = traitementFichierDesConnections(cheminFichierFil, tableauConnections, tabManuel, tableauPConnection, pnb_exceptions);
aux = *pnb_exceptions;
printf("%d", aux);
[...]
}

int traitementFichierDesConnections (char * cheminFichierFil, typeTableauConnection tableauConnections, typeTabManuel tabManuel, typeTableauPConnection tableauPConnection, int *pnb_exceptions)
{
[... et dans une boucle que j'ai testée et qui fonctionne bien]
//(*pnb_exceptions)++; que je suis obligé de mettre en commentaire
}


Tout se passe bien à la compilation, mais à l'exécution, il me dis que le programme a cessé de fonctionné, dès que je déclanche ce code, si je ne les met pas en commentaire.
Quelqu'un saurait-il d'où vien ce problème?

Merci d'avance,
Sheeps.

A voir également:

6 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
31 mai 2011 à 16:00
encore une fois, tu en dis trop peu !
Les erreurs d'exécutions viennent en général en C/C++ de pointeurs non initialisés, comme tu ne mets pas tes initialisations ici, impossible de savoir d'où vient l'erreur.
0
cap'tain sheeps Messages postés 447 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 1 octobre 2014 10
31 mai 2011 à 16:14
Re bonjour et encore merci =)
Justement, le problème viens sûrement de là, car je t'ai tout mis et je n'ai pas initialisé mes pointeurs. (je ne suis pas très habitué à les utiliser pour tout te dire)
En fait, non, je ne t'ai pas vraiment tout dis: quand je met int *pnb_exceptions;
Le programme passe tout de même dans ma boucle, me retourne bien la valeur souhaitée et plante à la fin de l'exécution du sous programme.
Quand j'essaye par contre de mettre int *pnb_exceptions = NULL;
Le programme plante directement avant même de passer dans ma boucle.

Enfin tu parlais bien des initialisations du pointeur??? ^^"
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
31 mai 2011 à 16:27
non, plutôt d'allocation mémoire, avec new ou malloc.
0
cap'tain sheeps Messages postés 447 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 1 octobre 2014 10
31 mai 2011 à 16:28
Ok, je vais me renseigner pour voir comment ca marche, merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cap'tain sheeps Messages postés 447 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 1 octobre 2014 10
Modifié par cap'tain sheeps le 31/05/2011 à 16:43
Alors, j'ai pas du comprendre grand chose...désolé... Quand je met:
int *pnb_exceptions = malloc(sizeof(int));

C::B me donne cette erreur:

C:\Documents and Settings\jfaure\Bureau\stage1\testtest\generateur.cpp|30|error: invalid conversion from 'void*' to 'int*'|

Or mon pointeur nécessite d'être un int*, j'immagine qu'il y a un moyen de changer cette obligation du malloc... Est-ce le cas?
0
cap'tain sheeps Messages postés 447 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 1 octobre 2014 10
31 mai 2011 à 16:48
Ouais ok, j'ai rien dis, suffisait de mettre (int *)
0
cap'tain sheeps Messages postés 447 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 1 octobre 2014 10
31 mai 2011 à 16:52
Bah c'est bon ca marche du coup, Merci beaucoup ! T'es vraiment un dieu ! =)
0