Pointeurs en paramètre dans GTK (C) [Résolu/Fermé]

Signaler
Messages postés
447
Date d'inscription
jeudi 19 mai 2011
Statut
Membre
Dernière intervention
1 octobre 2014
-
Messages postés
447
Date d'inscription
jeudi 19 mai 2011
Statut
Membre
Dernière intervention
1 octobre 2014
-
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.

6 réponses

Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 247
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.
Messages postés
447
Date d'inscription
jeudi 19 mai 2011
Statut
Membre
Dernière intervention
1 octobre 2014
9
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??? ^^"
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 247
non, plutôt d'allocation mémoire, avec new ou malloc.
Messages postés
447
Date d'inscription
jeudi 19 mai 2011
Statut
Membre
Dernière intervention
1 octobre 2014
9
Ok, je vais me renseigner pour voir comment ca marche, merci.
Messages postés
447
Date d'inscription
jeudi 19 mai 2011
Statut
Membre
Dernière intervention
1 octobre 2014
9
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?
Messages postés
447
Date d'inscription
jeudi 19 mai 2011
Statut
Membre
Dernière intervention
1 octobre 2014
9
Ouais ok, j'ai rien dis, suffisait de mettre (int *)
Messages postés
447
Date d'inscription
jeudi 19 mai 2011
Statut
Membre
Dernière intervention
1 octobre 2014
9
Bah c'est bon ca marche du coup, Merci beaucoup ! T'es vraiment un dieu ! =)