p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité régulier
    Inscrit en
    mars 2011
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : mars 2011
    Messages : 18
    Points : 7
    Points
    7

    Par défaut Erreur de segmentation GTK

    Salut voilà plusieurs jours que je planche sur le pb
    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
    int main(int argc, char **argv)
    {
    	/* Variables */
    	GtkWidget *FenetrePrincipale = NULL;
    	GtkWidget *titreLabel;
    	GtkWidget *loginLabel;
    	GtkWidget *mdpLabel;
    	reponse *utilisateur;
    	GtkWidget *creercptBtn;
    	GtkWidget *validerBtn;
    	GtkWidget *loginEntry;
    	GtkWidget *mdpEntry;
    	GtkWidget *pVBox;
    	GtkWidget *pTable;
     
    	GtkWidget *menubar;
    	GtkWidget *filemenu;
    	GtkWidget *file;
    	GtkWidget *quit;
     
    	/* Initialisation de GTK+ */
    	gtk_init(&argc, &argv); 
     
    	/* Création de la fenêtre */
    	FenetrePrincipale = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    	gtk_window_set_position(GTK_WINDOW(FenetrePrincipale), GTK_WIN_POS_CENTER);
    	gtk_window_set_default_size(GTK_WINDOW(FenetrePrincipale), 400, 300);
    	g_signal_connect(G_OBJECT(FenetrePrincipale), "delete-event", G_CALLBACK(gtk_main_quit), NULL);
     
    	pTable = gtk_table_new(5, 2, TRUE);
     
    	pVBox = gtk_vbox_new(FALSE, 0);
    	gtk_container_add(GTK_CONTAINER(FenetrePrincipale), GTK_WIDGET(pVBox));
     
    	menubar = gtk_menu_bar_new();
    	filemenu = gtk_menu_new();
     
    	file = gtk_menu_item_new_with_label("File");
    	quit = gtk_menu_item_new_with_label("Quit");
     
    	gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), filemenu);
    	gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), quit);
    	gtk_menu_shell_append(GTK_MENU_SHELL(menubar), file);
    	gtk_box_pack_start(GTK_BOX(pVBox), menubar, TRUE, TRUE, 3);
    	gtk_box_pack_start(GTK_BOX(pVBox), pTable, TRUE, TRUE, 3);
     
    	titreLabel = gtk_label_new("Bienvenue");
    	gtk_label_set_justify(GTK_LABEL(titreLabel), GTK_JUSTIFY_CENTER); g_debug(G_STRLOC); 
    	loginLabel = gtk_label_new("Login : ");
    	//gtk_label_set_justify(GTK_LABEL(loginLabel), GTK_JUSTIFY_RIGHT);
    	utilisateur->loginEntry = gtk_entry_new();g_debug(G_STRLOC);
    	mdpLabel = gtk_label_new("Mot de passe : ");
    	//gtk_label_set_justify(GTK_LABEL(mdpLabel), GTK_JUSTIFY_RIGHT);
    	utilisateur->mdpEntry = gtk_entry_new_with_max_length(10);
    	gtk_entry_set_visibility(GTK_ENTRY(utilisateur->mdpEntry), FALSE);
    	gtk_entry_set_invisible_char(GTK_ENTRY(utilisateur->mdpEntry), '*');
    	validerBtn= gtk_button_new_with_label("Valider");
    	gtk_label_set_justify(GTK_LABEL(validerBtn), GTK_JUSTIFY_CENTER); g_debug(G_STRLOC);
    	creercptBtn= gtk_button_new_with_label("Creer un compte utilisateur");
    	gtk_label_set_justify(GTK_LABEL(creercptBtn), GTK_JUSTIFY_CENTER); g_debug(G_STRLOC);
     
    	gtk_table_attach(GTK_TABLE(pTable), titreLabel, 0, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND, 0, 0);
    	gtk_table_attach_defaults(GTK_TABLE(pTable), loginLabel, 0, 1, 1, 2);
    	gtk_table_attach_defaults(GTK_TABLE(pTable), utilisateur->loginEntry, 1, 2, 1, 2);
    	gtk_table_attach_defaults(GTK_TABLE(pTable), mdpLabel, 0, 1, 2, 3);
    	gtk_table_attach_defaults(GTK_TABLE(pTable), utilisateur->mdpEntry, 1, 2, 2, 3);
    	gtk_table_attach(GTK_TABLE(pTable), validerBtn, 0, 2, 3, 4, GTK_EXPAND, GTK_EXPAND, 0, 0);
    	gtk_table_attach(GTK_TABLE(pTable), creercptBtn, 0, 2, 4, 5, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
    	g_signal_connect(G_OBJECT(validerBtn), "clicked", G_CALLBACK(OnValider), utilisateur);
    	g_signal_connect(G_OBJECT(creercptBtn), "clicked", G_CALLBACK(OnCreercpt), NULL);
     
     
    	gtk_widget_show_all(FenetrePrincipale);
    	gtk_main();g_debug (G_STRLOC);
     
    	return EXIT_SUCCESS;
    }
    Le code suivant s'exécute jusqu'à la ligne 48 après pour une raison que j'ignore "Erreur de segmentation".
    Quel est le problème ?

  2. #2
    Responsable Modération
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    6 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2007
    Messages : 6 010
    Points : 16 912
    Points
    16 912

    Par défaut

    Tu ne vérifies pas si gtk_label_new() a réussi ou échoué. Tu considères que « titreLabel » est forcément valide, ce qui n'est pas le cas.

    Si tu travailles sous Linux avec GCC, essaie de compiler ton programme avec « gcc -g » puis de lancer l'exécutable produit avec gdb. En utilisant un débogueur, tu trouveras plus vite la cause de ton problème.

  3. #3
    Invité régulier
    Inscrit en
    mars 2011
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : mars 2011
    Messages : 18
    Points : 7
    Points
    7

    Par défaut

    Mille merci ! C'était simple la variable utilisateur qui n'était pas allouée.

  4. #4
    Membre confirmé
    Avatar de fmdao
    Profil pro
    Formateur en informatique
    Inscrit en
    novembre 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : novembre 2010
    Messages : 90
    Points : 201
    Points
    201

    Par défaut

    ou Codeblock ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreurs de segmentation !
    Par anti-conformiste dans le forum Applications et environnements graphiques
    Réponses: 16
    Dernier message: 18/10/2005, 11h11
  2. Erreur de segmentation
    Par Trunks dans le forum C
    Réponses: 3
    Dernier message: 06/10/2005, 18h28
  3. Erreur de segmentation (Inconnue)
    Par Dark-Meteor dans le forum C
    Réponses: 5
    Dernier message: 08/09/2005, 13h42
  4. [Dev-C++] Erreur de segmentation...
    Par sas dans le forum Dev-C++
    Réponses: 11
    Dernier message: 26/03/2005, 14h25
  5. erreur de segmentation
    Par transistor49 dans le forum C++
    Réponses: 10
    Dernier message: 15/03/2005, 11h18

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