Bonjour, mon école m'a donné un projet quadtree (faisant donc intervenir la notion d'arbre) à faire. J'ai donc commencé par la division (découpage d'un carré en 4 carrés égaux. L'école a fourni une bibliothèque graphique permettant entre autre la gestion d'un clic, les formes géométriques,... J'ai donc ceci:
Seulement à l'éxécution, le terminal m'indique l'erreur suivante:Code:
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141 #include "graphics.h" #define L 600 #define H 600 typedef struct NOEUD* ARBRE; struct NOEUD { COULEUR c; ARBRE f1,f2,f3,f4; POINT P1,P2; }; typedef struct NOEUD NOEUD; ARBRE init_arbre(); ARBRE decoupe_arbre(ARBRE A,POINT P_clique); ARBRE calcul_coord_fils(ARBRE A); int clique_dans(ARBRE A,POINT P_clique); void afficher(ARBRE A); void liberation(ARBRE A); int main() { ARBRE racine; POINT P_clique,E,F; init_graphics(L,H); racine=init_arbre(); E.x=0;E.y=0; F.x=L-150;F.y=H-150; racine->P1.x=E.x;racine->P1.y=E.y; racine->P2.x=F.x;racine->P2.y=F.y; draw_fill_rectangle(E,F,blanc); P_clique=wait_clic(); racine=decoupe_arbre(racine,P_clique); afficher(racine); wait_escape(); liberation(racine); return 0; } ARBRE init_arbre() { ARBRE A=(ARBRE)malloc(sizeof(ARBRE)); A->f1=NULL; A->f2=NULL; A->f3=NULL; A->f4=NULL; A->c=gris; return A; } ARBRE decoupe_arbre(ARBRE A,POINT P_clique) { if(A->f1!=NULL) { if(clique_dans(A->f1,P_clique)) A->f1=decoupe_arbre(A->f1,P_clique); else if(clique_dans(A->f2,P_clique)) A->f2=decoupe_arbre(A->f2,P_clique); else if(clique_dans(A->f3,P_clique)) A->f3=decoupe_arbre(A->f3,P_clique); else if(clique_dans(A->f4,P_clique)) A->f4=decoupe_arbre(A->f4,P_clique); } else A=calcul_coord_fils(A); return A; } ARBRE calcul_coord_fils(ARBRE A) { A->f1=init_arbre(); A->f2=init_arbre(); A->f3=init_arbre(); A->f4=init_arbre(); A->f1->P1.x=A->P1.x;A->f1->P1.y=A->P2.y/2; A->f1->P2.x=A->P2.x/2;A->f1->P2.y=A->P2.y; A->f2->P1.x=A->P2.x/2;A->f2->P1.y=A->P2.y/2; A->f2->P2.x=A->P2.x;A->f2->P2.y=A->P2.y; A->f3->P1.x=A->P1.x;A->f3->P1.y=A->P2.y/2; A->f3->P2.x=A->P2.x/2;A->f3->P2.y=A->P2.y/2; A->f4->P1.x=A->P2.x/2;A->f4->P1.y=A->P1.y; A->f4->P2.x=A->P2.x;A->f4->P2.y=A->P2.y/2; return A; } int clique_dans(ARBRE A,POINT P_clique) { if(P_clique.x>=A->P1.x && P_clique.x<=A->P2.x) { if(P_clique.y>=A->P1.y && P_clique.y<=A->P2.y) return 1; else return 0; } else return 0; } void liberation(ARBRE A) { if(A->f1!=NULL) { liberation(A->f1); free(A); liberation(A->f2); free(A); liberation(A->f3); free(A); liberation(A->f4); free(A); } } void afficher(ARBRE A) { if(A->racine!=NULL) { afficher(A->f1); draw_rectangle(A->P1,A->P2,A->c); afficher(A->f2); draw_rectangle(A->P1,A->P2,A->c); afficher(A->f3); draw_rectangle(A->P1,A->P2,A->c); afficher(A->f4); draw_rectangle(A->P1,A->P2,A->c); } }
Je n'ai pas trouvé de réponse à mon problème en cherchant sur internet, je viens donc chercher un peu d'aide ici. Merci.Citation:
*** glibc detected *** ./main: malloc(): memory corruption (fast): 0x09616288 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x6ff22)[0x234f22]
/lib/i386-linux-gnu/libc.so.6(+0x72053)[0x237053]
/lib/i386-linux-gnu/libc.so.6(__libc_malloc+0x68)[0x2387f8]
./main[0x804b5ef]
./main[0x804b63c]
./main[0x8048d59]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x1de113]
./main[0x8048d9d]
======= Memory map: ========
00110000-00113000 r-xp 00000000 08:01 268859 /usr/lib/i386-linux-gnu/libpulse-simple.so.0.0.3
00113000-00114000 r--p 00002000 08:01 268859 /usr/lib/i386-linux-gnu/libpulse-simple.so.0.0.3
00114000-00115000 rw-p 00003000 08:01 268859 /usr/lib/i386-linux-gnu/libpulse-simple.so.0.0.3
00115000-0012d000 r-xp 00000000 08:01 266565 /usr/lib/libaa.so.1.0.4
0012d000-0012e000 r--p 00018000 08:01 266565 /usr/lib/libaa.so.1.0.4
0012e000-0012f000 rw-p 00019000 08:01 266565 /usr/lib/libaa.so.1.0.4
0012f000-00131000 rw-p 00000000 00:00 0
00131000-00137000 r-xp 00000000 08:01 269139 /usr/lib/i386-linux-gnu/libjson.so.0.0.1
00137000-00138000 r--p 00005000 08:01 269139 /usr/lib/i386-linux-gnu/libjson.so.0.0.1
00138000-00139000 rw-p 00006000 08:01 269139 /usr/lib/i386-linux-gnu/libjson.so.0.0.1
00139000-0013e000 r-xp 00000000 08:01 269016 /usr/lib/i386-linux-gnu/libasyncns.so.0.3.1
0013e000-0013f000 r--p 00004000 08:01 269016 /usr/lib/i386-linux-gnu/libasyncns.so.0.3.1
0013f000-00140000 rw-p 00005000 08:01 269016 /usr/lib/i386-linux-gnu/libasyncns.so.0.3.1
00140000-00141000 r-xp 00000000 00:00 0 [vdso]
00141000-0018d000 r-xp 00000000 08:01 268858 /usr/lib/i386-linux-gnu/libpulse.so.0.13.4
0018d000-0018e000 r--p 0004b000 08:01 268858 /usr/lib/i386-linux-gnu/libpulse.so.0.13.4
0018e000-0018f000 rw-p 0004c000 08:01 268858 /usr/lib/i386-linux-gnu/libpulse.so.0.13.4
0018f000-001a2000 r-xp 00000000 08:01 134695 /lib/i386-linux-gnu/libz.so.1.2.3.4
001a2000-001a3000 r--p 00012000 08:01 134695 /lib/i386-linux-gnu/libz.so.1.2.3.4
001a3000-001a4000 rw-p 00013000 08:01 134695 /lib/i386-linux-gnu/libz.so.1.2.3.4
001a4000-001c1000 r-xp 00000000 08:01 269278 /usr/lib/i386-linux-gnu/libxcb.so.1.1.0
001c1000-001c2000 r--p 0001c000 08:01 269278 /usr/lib/i386-linux-gnu/libxcb.so.1.1.0
001c2000-001c3000 rw-p 0001d000 08:01 269278 /usr/lib/i386-linux-gnu/libxcb.so.1.1.0
001c5000-0033d000 r-xp 00000000 08:01 151606 /lib/i386-linux-gnu/libc-2.13.so
0033d000-0033f000 r--p 00178000 08:01 151606 /lib/i386-linux-gnu/libc-2.13.so
0033f000-00340000 rw-p 0017a000 08:01 151606 /lib/i386-linux-gnu/libc-2.13.so
00340000-00343000 rw-p 00000000 00:00 0
00343000-0034b000 r-xp 00000000 08:01 134693 /lib/i386-linux-gnu/libwrap.so.0.7.6
0034b000-0034c000 r--p 00007000 08:01 134693 /lib/i386-linux-gnu/libwrap.so.0.7.6
0034c000-0034d000 rw-p 00008000 08:01 134693 /lib/i386-linux-gnu/libwrap.so.0.7.6
0034d000-00369000 r-xp 00000000 08:01 169390 /lib/libtinfo.so.5.9
00369000-0036b000 r--p 0001b000 08:01 169390 /lib/libtinfo.so.5.9
0036b000-0036c000 rw-p 0001d000 08:01 169390 /lib/libtinfo.so.5.9
0036c000-0036e000 r-xp 00000000 08:01 268982 /usr/lib/i386-linux-gnu/libXau.so.6.0.0
0036e000-0036f000 r--p 00001000 08:01 268982 /usr/lib/i386-linux-gnu/libXau.so.6.0.0
0036f000-00370000 rw-p 00002000 08:01 268982 /usr/lib/i386-linux-gnu/libXau.so.6.0.0
00370000-00375000 r-xp 00000000 08:01 268990 /usr/lib/i386-linux-gnu/libXdmcp.so.6.0.0
00375000-00376000 r--p 00004000 08:01 268990 /usr/lib/i386-linux-gnu/libXdmcp.so.6.0.0
00376000-00377000 rw-p 00005000 08:01 268990 /usr/lib/i386-linux-gnu/libXdmcp.so.6.0.0
00377000-0037d000 r-xp 00000000 08:01 269182 /usr/lib/i386-linux-gnu/libogg.so.0.7.1
0037d000-0037e000 r--p 00005000 08:01 269182 /usr/lib/i386-linux-gnu/libogg.so.0.7.1
0037e000-0037f000 rw-p 00006000 08:01 269182 /usr/lib/i386-linux-gnu/libogg.so.0.7.1
0037f000-00388000 r-xp 00000000 08:01 268986 /usr/lib/i386-linux-gnu/libXcursor.so.1.0.2
00388000-00389000 r--p 00008000 08:01 268986 /usr/lib/i386-linux-gnu/libXcursor.so.1.0.2
00389000-0038a000 rw-p 00009000 08:01 268986 /usr/lib/i386-linux-gnu/libXcursor.so.1.0.2
0038c000-003aa000 r-xp 00000000 08:01 151603 /lib/i386-linux-gnu/ld-2.13.so
003aa000-003ab000 r--p 0001d000 08:01 151603 /lib/i386-linux-gnu/ld-2.13.so
003ab000-003ac000 rw-p 0001e000 08:01 151603 /lib/i386-linux-gnu/ld-2.13.so
003ac000-0040f000 r-xp 00000000 08:01 268860 /usr/lib/i386-linux-gnu/libpulsecommon-1.0.so
0040f000-00410000 r--p 00062000 08:01 268860 /usr/lib/i386-linux-gnu/libpulsecommon-1.0.so
00410000-00411000 rw-p 00063000 08:01 268860 /usr/lib/i386-linux-gnu/libpulsecommon-1.0.so
00411000-0043a000 r-xp 00000000 08:01 269265 /usr/lib/i386-linux-gnu/libvorbis.so.0.4.5
0043a000-0043b000 r--p 00028000 08:01 269265 /usr/lib/i386-linux-gnu/libvorbis.so.0.4.5
0043b000-0043c000 rw-p 00029000 08:01 269265 /usr/lib/i386-linux-gnu/libvorbis.so.0.4.5
0043c000-00445000 r-xp 00000000 08:01 269004 /usr/lib/i386-linux-gnu/libXrender.so.1.3.0
00445000-00446000 r--p 00008000 08:01 269004 /usr/lib/i386-linux-gnu/libXrender.so.1.3.0
00446000-00447000 rw-p 00009000 08:01 269004 /usr/lib/i386-linux-gnu/libXrender.so.1.3.0
0044a000-0046c000 r-xp 00000000 08:01 266607 /usr/lib/libcaca.so.0.99.17
0046c000-0046d000 r--p 00022000 08:01 266607 /usr/lib/libcaca.so.0.99.17
0046d000-00510000 rw-p 00023000 08:01 266607 /usr/lib/libcaca.so.0.99.17
00510000-00515000 rw-p 00000000 00:00 0
00515000-00528000 r-xp 00000000 08:01 155540 /lib/i386-linux-gnu/libresolv-2.13.so
00528000-00529000 r--p 00012000 08:01 155540 /lib/i386-linux-gnu/libresolv-2.13.so
00529000-0052a000 rw-p 00013000 08:01 155540 /lib/i386-linux-gnu/libresolv-2.13.so
0052a000-0052c000 rw-p 00000000 00:00 0
0052d000-00530000 r-xp 00000000 08:01 151609 /lib/i386-linux-gnu/libdl-2.13.so
00530000-00531000 r--p 00002000 08:01 151609 /lib/i386-linux-gnu/libdl-2.13.so
00531000-00532000 rw-p 00003000 08:01 151609 /lib/i386-linux-gnu/libdl-2.13.so
00532000-0059d000 r-xp 00000000 08:01 269234 /usr/lib/i386-linux-gnu/libsndfile.so.1.0.24
0059d000-0059e000 r--p 0006b000 08:01 269234 /usr/lib/i386-linux-gnu/libsndfile.so.1.0.24
0059e000-0059f000 rw-p 0006c000 08:01 269234 /usr/lib/i386-linux-gnu/libsndfile.so.1.0.24
0059f000-005a3000 rw-p 00000000 00:00 0
005a6000-005b0000 r-xp 00000000 08:01 310145 /usr/lib/libesd.so.0.2.39
005b0000-005b1000 r--p 00009000 08:01 310145 /usr/lib/libesd.so.0.2.39
005b1000-005b2000 rw-p 0000a000 08:01 310145 /usr/lib/libesd.so.0.2.39
005b7000-005d9000 r-xp 00000000 08:01 310015 /usr/lib/libaudiofile.so.0.0.2
005d9000-005da000 r--p 00021000 08:01 310015 /usr/lib/libaudiofile.so.0.0.2
005da000-005dc000 rw-p 00022000 08:01 310015 /usr/lib/libaudiofile.so.0.0.2
005dc000-005ed000 r-xp 00000000 08:01 268992 /usr/lib/i386-linux-gnu/libXext.so.6.4.0
005ed000-005ee000 r--p 00010000 08:01 268992 /usr/lib/i386-linux-gnu/libXext.so.6.4.0
005ee000-005ef000 rw-p 00011000 08:01 268992 /usr/lib/i386-linux-gnu/libXext.so.6.4.0
00601000-00605000 r-xp 00000000 08:01 268994 /usr/lib/i386-linux-gnu/libXfixes.so.3.1.0
00605000-00606000 r--p 00003000 08:01 268994 /usr/lib/i386-linux-gnu/libXfixes.so.3.1.0
00606000-00607000 rw-p 00004000 08:01 268994 /usr/lib/i386-linux-gnu/libXfixes.so.3.1.0
0060a000-0067f000 r-xp 00000000 08:01 266539 /usr/lib/libSDL-1.2.so.0.11.3
0067f000-00680000 r--p 00075000 08:01 266539 /usr/lib/libSDL-1.2.so.0.11.3
00680000-00681000 rw-p 00076000 08:01 266539 /usr/lib/libSDL-1.2.so.0.11.3
00681000-006ad000 rw-p 00000000 00:00 0
006ad000-006c9000 r-xp 00000000 08:01 134633 /lib/i386-linux-gnu/libgcc_s.so.1
006c9000-006ca000 r--p 0001b000 08:01 134633 /lib/i386-linux-gnu/libgcc_s.so.1
006ca000-006cb000 rw-p 0001c000 08:01 134633 /lib/i386-linux-gnu/libgcc_s.so.1
006f3000-0073a000 r-xp 00000000 08:01 169375 /lib/i386-linux-gnu/libdbus-1.so.3.5.7
0073a000-0073b000 r--p 00046000 08:01 169375 /lib/i386-linux-gnu/libdbus-1.so.3.5.7
0073b000-0073c000 rw-p 00047000 08:01 169375 /lib/i386-linux-gnu/libdbus-1.so.3.5.7
00751000-007e3000 r-xp 00000000 08:01 268854 /usr/lib/i386-linux-gnu/libfreetype.so.6.6.2
007e3000-007e7000 r--p 00091000 08:01 268854 /usr/lib/i386-linux-gnu/libfreetype.so.6.6.2
007e7000-007e8000 rw-p 00095000 08:01 268854 /usr/lib/i386-linux-gnu/libfreetype.so.6.6.2
0081e000-00835000 r-xp 00000000 08:01 155539 /lib/i386-linux-gnu/libpthread-2.13.so
00835000-00836000 r--p 00016000 08:01 155539 /lib/i386-linux-gnu/libpthread-2.13.so
00836000-00837000 rw-p 00017000 08:01 155539 /lib/i386-linux-gnu/libpthread-2.13.so
00837000-00839000 rw-p 00000000 00:00 0
00839000-00885000 r-xp 00000000 08:01 268933 /usr/lib/i386-linux-gnu/libFLAC.so.8.2.0
00885000-00886000 r--p 0004b000 08:01 268933 /usr/lib/i386-linux-gnu/libFLAC.so.8.2.0
00886000-00887000 rw-p 0004c000 08:01 268933 /usr/lib/i386-linux-gnu/libFLAC.so.8.2.0
008b4000-008bb000 r-xp 00000000 08:01 155541 /lib/i386-linux-gnu/librt-2.13.so
008bb000-008bc000 r--p 00006000 08:01 155541 /lib/i386-linux-gnu/librt-2.13.so
008bc000-008bd000 rw-p 00007000 08:01 155541 /lib/i386-linux-gnu/librt-2.13.so
00909000-00931000 r-xp 00000000 08:01 153964 /lib/i386-linux-gnu/libm-2.13.so
00931000-00932000 r--p 00028000 08:01 153964 /lib/i386-linux-gnu/libm-2.13.so
00932000-00933000 rw-p 00029000 08:01 153964 /lib/i386-linux-gnu/libm-2.13.so
0094f000-00954000 r-xp 00000000 08:01 266816 /usr/lib/libgpm.so.2.0.0
00954000-00955000 r--p 00004000 08:01 266816 /usr/lib/libgpm.so.2.0.0
00955000-00956000 rw-p 00005000 08:01 266816 /usr/lib/libgpm.so.2.0.0
009b2000-009b6000 r-xp 00000000 08:01 310795 /usr/lib/libSDL_ttf-2.0.so.0.6.3
009b6000-009b7000 r--p 00003000 08:01 310795 /usr/lib/libSDL_ttf-2.0.so.0.6.3
009b7000-009b8000 rw-p 00004000 08:01 310795 /usr/lib/libSDL_ttf-2.0.so.0.6.3
009b8000-00a8d000 r-xp 00000000 08:01 133771 /lib/libslang.so.2.2.4
00a8d000-00a8e000 ---p 000d5000 08:01 133771 /lib/libslang.so.2.2.4
00a8e000-00a91000 r--p 000d5000 08:01 133771 /lib/libslang.so.2.2.4
00a91000-00a9f000 rw-p 000d8000 08:01 133771 /lib/libslang.so.2.2.4
00a9f000-00ad9000 rw-p 00000000 00:00 0
00b03000-00b18000 r-xp 00000000 08:01 153966 /lib/i386-linux-gnu/libnsl-2.13.so
00b18000-00b19000 r--p 00015000 08:01 153966 /lib/i386-linux-gnu/libnsl-2.13.so
00b19000-00b1a000 rw-p 00016000 08:01 153966 /lib/i386-linux-gnu/libnsl-2.13.so
00b1a000-00b1c000 rw-p 00000000 00:00 0
00bfe000-00cea000 r-xp 00000000 08:01 269014 /usr/lib/i386-linux-gnu/libasound.so.2.0.0
00cea000-00cee000 r--p 000eb000 08:01 269014 /usr/lib/i386-linux-gnu/libasound.so.2.0.0
00cee000-00cef000 rw-p 000ef000 08:01 269014 /usr/lib/i386-linux-gnu/libasound.so.2.0.0
00cef000-00e20000 r-xp 00000000 08:01 268980 /usr/lib/i386-linux-gnu/libX11.so.6.3.0
00e20000-00e21000 ---p 00131000 08:01 268980 /usr/lib/i386-linux-gnu/libX11.so.6.3.0
00e21000-00e22000 r--p 00131000 08:01 268980 /usr/lib/i386-linux-gnu/libX11.so.6.3.0
00e22000-00e24000 rw-p 00132000 08:01 268980 /usr/lib/i386-linux-gnu/libX11.so.6.3.0
00e24000-00e25000 rw-p 00000000 00:00 0
00e8a000-00eaa000 r-xp 00000000 08:01 167276 /lib/libncurses.so.5.9
00eaa000-00eab000 r--p 0001f000 08:01 167276 /lib/libncurses.so.5.9
00eab000-00eac000 rw-p 00020000 08:01 167276 /lib/libncurses.so.5.9
00f67000-00f95000 r-xp 00000000 08:01 169384 /lib/libncursesw.so.5.9
00f95000-00f96000 r--p 0002d000 08:01 169384 /lib/libncursesw.so.5.9
00f96000-00f97000 rw-p 0002e000 08:01 169384 /lib/libncursesw.so.5.9
00f97000-010fd000 r-xp 00000000 08:01 269267 /usr/lib/i386-linux-gnu/libvorbisenc.so.2.0.8
010fd000-0110e000 r--p 00165000 08:01 269267 /usr/lib/i386-linux-gnu/libvorbisenc.so.2.0.8
0110e000-0110f000 rw-p 00176000 08:01 269267 /usr/lib/i386-linux-gnu/libvorbisenc.so.2.0.8
08048000-0804d000 r-xp 00000000 08:01 149921 /home/robin/Bureau/quadtree/main
0804d000-0804e000 r--p 00004000 08:01 149921 /home/robin/Bureau/quadtree/main
0804e000-0804f000 rw-p 00005000 08:01 149921 /home/robin/Bureau/quadtree/main
095c0000-09619000 rw-p 00000000 00:00 0 [heap]
b7200000-b7221000 rw-p 00000000 00:00 0
b7221000-b7300000 ---p 00000000 00:00 0
b7350000-b74b0000 rw-s 00000000 00:04 1048591 /SYSV00000000 (deleted)
b74b0000-b74ea000 rw-p 00000000 00:00 0
b7568000-b7569000 r--p 0085c000 08:01 271514 /usr/lib/locale/locale-archive
b7569000-b75a9000 r--p 002bd000 08:01 271514 /usr/lib/locale/locale-archive
b75a9000-b77a9000 r--p 00000000 08:01 271514 /usr/lib/locale/locale-archive
b77a9000-b77b3000 rw-p 00000000 00:00 0
b77ba000-b77bc000 rw-p 00000000 00:00 0
b77bc000-b77c3000 r--s 00000000 08:01 278612 /usr/lib/i386-linux-gnu/gconv/gconv-modules.cache
b77c3000-b77c5000 rw-p 00000000 00:00 0
bfe27000-bfe48000 rw-p 00000000 00:00 0 [stack]
Aborted