Bonjour .
Je décellope en se moment un jeu de dames chinoises en réseaux pour mon projet de DUT R&T.Tout fonctionne presque très bien car a chaque rafraichissment du plateau l'utilisation mémoire augmente d'environ 300ko .Donc dans une partie a 6 joueur je vous laisse imaginer le résultat .
J'ai essayer de faire des g_free mais cela produit une erreur de segmentation.

Voici un extrait ( Le code Fait plus de 5000 lignes).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
GtkWidget **pImage0;
GtkWidget **pImage1;
GtkWidget **pImage2;
GtkWidget *........ect jusqu'a 121
 
GtkWidget *event_box0;
GtkWidget *event_box0;
GtkWidget *event_box0;
GtkWidget *even........ect jusqu'a 121
 
//Il y a une eventbox et une image  par pion .
extrait du code d'affichage :

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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
 
void affiche_pion_blanc()
{
    if ((4+2*i-j)>=0 && (5+2*i-j)>=0 && plateau[i][j].type_emp=='p' && liste_joueur[(* plateau[i][j].pion_emp).num_joueur].couleur == 0 && sel[0]==0 )
    {
 
        event_box0=gtk_event_box_new();
 
 
        gtk_table_attach(GTK_TABLE(Table), event_box0, 4+2*i-j,5+2*i-j, 2*j,2*j+1,GTK_FILL, GTK_FILL, 0, 0);
 
        gtk_container_add(GTK_CONTAINER(event_box0), pImage0);
 
        gtk_widget_add_events(event_box0,GDK_BUTTON_PRESS_MASK);
        g_signal_connect(G_OBJECT(event_box0), "button_press_event", G_CALLBACK(clique_pion), NULL);
        sel[0]=1;
        gtk_widget_show_all(Table);
    }
 
 
    else if ((4+2*i-j)>=0 && (5+2*i-j)>=0 && plateau[i][j].type_emp=='p' && liste_joueur[(* plateau[i][j].pion_emp).num_joueur].couleur == 0 && sel[1]==0 )
    {
 
        event_box1=gtk_event_box_new();
 
 
        gtk_table_attach(GTK_TABLE(Table), event_box1, 4+2*i-j,5+2*i-j, 2*j,2*j+1,GTK_FILL, GTK_FILL, 0, 0);
 
        gtk_container_add(GTK_CONTAINER(event_box1), pImage1);
 
        gtk_widget_add_events(event_box1,GDK_BUTTON_PRESS_MASK);
        g_signal_connect(G_OBJECT(event_box1), "button_press_event", G_CALLBACK(clique_pion), NULL);
        sel[1]=1;
        gtk_widget_show_all(Table);
    }
 
    else if ((4+2*i-j)>=0 && (5+2*i-j)>=0 && plateau[i][j].type_emp=='p' && liste_joueur[(* plateau[i][j].pion_emp).num_joueur].couleur == 0 && sel[2]==0 )
    {
 
        event_box2=gtk_event_box_new();
 
 
        gtk_table_attach(GTK_TABLE(Table), event_box2, 4+2*i-j,5+2*i-j, 2*j,2*j+1,GTK_FILL, GTK_FILL, 0, 0);
 
        gtk_container_add(GTK_CONTAINER(event_box2), pImage2);
 
        gtk_widget_add_events(event_box2,GDK_BUTTON_PRESS_MASK);
        g_signal_connect(G_OBJECT(event_box2), "button_press_event", G_CALLBACK(clique_pion), NULL);
        sel[2]=1;
        gtk_widget_show_all(Table);
    }
 
    else if ((4+2*i-j)>=0 && (5+2*i-j)>=0 && plateau[i][j].type_emp=='p' && liste_joueur[(* plateau[i][j].pion_emp).num_joueur].couleur == 0 && sel[3]==0 )
    {
 
        event_box3=gtk_event_box_new();
 
 
        gtk_table_attach(GTK_TABLE(Table), event_box3, 4+2*i-j,5+2*i-j, 2*j,2*j+1,GTK_FILL, GTK_FILL, 0, 0);
 
        gtk_container_add(GTK_CONTAINER(event_box3), pImage3);
 
        gtk_widget_add_events(event_box3,GDK_BUTTON_PRESS_MASK);
        g_signal_connect(G_OBJECT(event_box3), "button_press_event", G_CALLBACK(clique_pion), NULL);
        sel[3]=1;
        gtk_widget_show_all(Table);
    }
 
    else if ((4+2*i-j)>=0 && (5+2*i-j)>=0 && plateau[i][j].type_emp=='p' && liste_joueur[(* plateau[i][j].pion_emp).num_joueur].couleur == 0 && sel[4]==0 )
    {
 
        event_box4=gtk_event_box_new();
 
 
        gtk_table_attach(GTK_TABLE(Table), event_box4, 4+2*i-j,5+2*i-j, 2*j,2*j+1,GTK_FILL, GTK_FILL, 0, 0);
 
        gtk_container_add(GTK_CONTAINER(event_box4), pImage4);
 
        gtk_widget_add_events(event_box4,GDK_BUTTON_PRESS_MASK);
        g_signal_connect(G_OBJECT(event_box4), "button_press_event", G_CALLBACK(clique_pion), NULL);
        sel[4]=1;
        gtk_widget_show_all(Table);
    }
 
    else if ((4+2*i-j)>=0 && (5+2*i-j)>=0 && plateau[i][j].type_emp=='p' && liste_joueur[(* plateau[i][j].pion_emp).num_joueur].couleur == 0 && sel[5]==0 )
    {
 
        event_box5=gtk_event_box_new();
 
 
        gtk_table_attach(GTK_TABLE(Table), event_box5, 4+2*i-j,5+2*i-j, 2*j,2*j+1,GTK_FILL, GTK_FILL, 0, 0);
 
        gtk_container_add(GTK_CONTAINER(event_box5), pImage5);
 
        gtk_widget_add_events(event_box5,GDK_BUTTON_PRESS_MASK);
        g_signal_connect(G_OBJECT(event_box5), "button_press_event", G_CALLBACK(clique_pion), NULL);
        sel[5]=1;
        gtk_widget_show_all(Table);
    }
//...........etc
Fonction de rafraichissment :
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
 
void rafraichissement()
 
{
 
 
    for (n=0;n<=nb_joueur+1;n++)
    {
        envoi_numjouant[n]=1;/*On envoi le num jouant */
    }
    if (Table!=NULL)
    {
        gtk_widget_destroy(Table);
 
    }
    Table = gtk_table_new(30, 30, TRUE);
    gtk_container_add(GTK_CONTAINER(boite_horizontale), Table);
    gtk_statusbar_pop(GTK_STATUSBAR(bar_detat), GPOINTER_TO_INT(messageid));
 
    if (num_jouant==0)
    {
        message0();
    }
 
    int boucle ;
    for (boucle=0;boucle<=299;boucle++)
    {
        sel[boucle]=0;
 
    }
    printf("***MISE A JOUR DE L'AFFICHAGE***\n");
    gtk_main_iteration();
    affiche();
    if (num_jouant==0)
    {
        message0();
    }
    else if (num_jouant==1)
    {
        message1();
    }
    else if (num_jouant==2)
    {
        message2();
    }
    else if (num_jouant==3)
    {
        message3();
    }
    else if (num_jouant==4)
    {
        message4();
    }
    else if (num_jouant==5)
    {
        message5();
    }
    gtk_main_iteration();
 
 
}
Voila merci d'avance .