Pointeurs en paramètre dans GTK (C)

Résolu
cap'tain sheeps Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   -  
cap'tain sheeps Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   -
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 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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   Statut Membre Dernière intervention   10
 
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 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
non, plutôt d'allocation mémoire, avec new ou malloc.
0
cap'tain sheeps Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   10
 
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   Statut Membre Dernière intervention   10
 
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   Statut Membre Dernière intervention   10
 
Ouais ok, j'ai rien dis, suffisait de mettre (int *)
0
cap'tain sheeps Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   10
 
Bah c'est bon ca marche du coup, Merci beaucoup ! T'es vraiment un dieu ! =)
0