Allouer classe ayant elle aussi des allocations
Bonjour a tous.
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
|
class CObjOBJ
{
public:
CObjOBJ();
void SetTexture(std::string filename);
void SetBump(std::string filename);
void Load(std::string filename);
void Draw();
~CObjOBJ();
private:
void Init();
GLuint texture,bump;
ObjVertex *Vertex;
ObjNormal *Normal;
ObjTexCoord *TexCoord;
ObjFace *Faces;
int nbVertices, nbNormals, nbTexCoords, nbFaces;
GLuint MapList; //Display list
}; |
J'ai cette classe qui marche parfaitement lorsque je créer une instance statique.
Mais lorsque que j'allou un tableau de cette classe dynamiquement j'obtient des erreurs a la fermeture de mon programme :
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 142 143
|
[XT95@localhost test]$ clear && make x
g++ -o src/WorldManager.o -c src/WorldManager.cpp
g++ src/main.o src/gui.o src/WorldManager.o -o Embya -L/usr/lib -lSDL -lpthread -lxtEngine -lSDL_image -lSDL_ttf -lGL -lGLU -lGLEW -llua -ldl
./Embya
nbObj : 5
nbEntity : 50
*** glibc detected *** ./Embya: free(): invalid next size (normal): 0x08776b70 ***
======= Backtrace: =========
/lib/libc.so.6[0xb3609d]
/lib/libc.so.6(cfree+0x90)[0xb396f0]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0x3016871]
/usr/lib/libstdc++.so.6(_ZdaPv+0x1d)[0x30168cd]
./Embya[0x8053bac]
./Embya[0x804cad2]
./Embya(__gxx_personality_v0+0x3f4)[0x804b9c8]
/lib/libc.so.6(exit+0xe9)[0xafb939]
./Embya[0x804ba09]
./Embya[0x804bf23]
/lib/libc.so.6(__libc_start_main+0xdc)[0xae5f2c]
./Embya(__gxx_personality_v0+0x26d)[0x804b841]
======= Memory map: ========
00101000-00117000 r-xp 00000000 08:02 4675138 /usr/lib/libXmu.so.6.2.0
00117000-00118000 rwxp 00016000 08:02 4675138 /usr/lib/libXmu.so.6.2.0
0012d000-0012e000 r-xp 00000000 08:02 5625090 /usr/lib/nvidia/tls/libnvidia-tls.so.1.0.9746
0012e000-0012f000 rwxp 00000000 08:02 5625090 /usr/lib/nvidia/tls/libnvidia-tls.so.1.0.9746
00131000-00185000 r-xp 00000000 08:02 4673750 /usr/lib/libXt.so.6.0.0
00185000-00189000 rwxp 00054000 08:02 4673750 /usr/lib/libXt.so.6.0.0
001d3000-00255000 r-xp 00000000 08:02 5631359 /usr/lib/nvidia/libGL.so.1.0.9746
00255000-00271000 rwxp 00081000 08:02 5631359 /usr/lib/nvidia/libGL.so.1.0.9746
00271000-00272000 rwxp 00271000 00:00 0
00274000-002f0000 r-xp 00000000 08:02 4662578 /usr/lib/libSDL-1.2.so.0.7.3
002f0000-002f2000 rwxp 0007c000 08:02 4662578 /usr/lib/libSDL-1.2.so.0.7.3
002f2000-0031d000 rwxp 002f2000 00:00 0
004b0000-00586000 r-xp 00000000 08:02 4546751 /lib/libasound.so.2.0.0
00586000-0058b000 rwxp 000d5000 08:02 4546751 /lib/libasound.so.2.0.0
00638000-00641000 r-xp 00000000 08:02 4675106 /usr/lib/libesd.so.0.2.36
00641000-00642000 rwxp 00009000 08:02 4675106 /usr/lib/libesd.so.0.2.36
006c0000-006e8000 r-xp 00000000 08:02 4673756 /usr/lib/libaudiofile.so.0.0.2
006e8000-006eb000 rwxp 00027000 08:02 4673756 /usr/lib/libaudiofile.so.0.0.2
00902000-00958000 r-xp 00000000 08:02 4659249 /usr/lib/libtiff.so.3.8.2
00958000-0095a000 rwxp 00056000 08:02 4659249 /usr/lib/libtiff.so.3.8.2
00ab3000-00acc000 r-xp 00000000 08:02 4545858 /lib/ld-2.5.so
00acc000-00acd000 r-xp 00018000 08:02 4545858 /lib/ld-2.5.so
00acd000-00ace000 rwxp 00019000 08:02 4545858 /lib/ld-2.5.so
00ad0000-00c07000 r-xp 00000000 08:02 4545874 /lib/libc-2.5.so
00c07000-00c09000 r-xp 00137000 08:02 4545874 /lib/libc-2.5.so
00c09000-00c0a000 rwxp 00139000 08:02 4545874 /lib/libc-2.5.so
00c0a000-00c0d000 rwxp 00c0a000 00:00 0
00c0f000-00c34000 r-xp 00000000 08:02 4546743 /lib/libm-2.5.so
00c34000-00c35000 r-xp 00024000 08:02 4546743 /lib/libm-2.5.so
00c35000-00c36000 rwxp 00025000 08:02 4546743 /lib/libm-2.5.so
00c38000-00c3a000 r-xp 00000000 08:02 4545897 /lib/libdl-2.5.so
00c3a000-00c3b000 r-xp 00001000 08:02 4545897 /lib/libdl-2.5.so
00c3b000-00c3c000 rwxp 00002000 08:02 4545897 /lib/libdl-2.5.so
00c3e000-00c50000 r-xp 00000000 08:02 4675085 /usr/lib/libz.so.1.2.3
00c50000-00c51000 rwxp 00011000 08:02 4675085 /usr/lib/libz.so.1.2.3
00c53000-00c55000 r-xp 00000000 08:02 4674904 /usr/lib/libXau.so.6.0.0
00c55000-00c56000 rwxp 00001000 08:02 4674904 /usr/lib/libXau.so.6.0.0
00c58000-00c5d000 r-xp 00000000 08:02 4675079 /usr/lib/libXdmcp.so.6.0.0
00c5d000-00c5e000 rwxp 00004000 08:02 4675079 /usr/lib/libXdmcp.so.6.0.0
00cc1000-00ccc000 r-xp 00000000 08:02 4667603 /usr/lib/libSDL_image-1.2.so.0.1.4
00ccc000-00ccd000 rwxp 0000b000 08:02 4667603 /usr/lib/libSDL_image-1.2.so.0.1.4
00ccd000-00cdd000 rwxp 00ccd000 00:00 0
00cdf000-00ce4000 r-xp 00000000 08:02 4650826 /usr/lib/libSDL_ttf-2.0.so.0.6.2
00ce4000-00ce5000 rwxp 00004000 08:02 4650826 /usr/lib/libSDL_ttf-2.0.so.0.6.2
00d64000-00d77000 r-xp 00000000 08:02 4546741 /lib/libpthread-2.5.so
00d77000-00d78000 r-xp 00012000 08:02 4546741 /lib/libpthread-2.5.so
00d78000-00d79000 rwxp 00013000 08:02 4546741 /lib/libpthread-2.5.so
00d79000-00d7b000 rwxp 00d79000 00:00 0
00d7d000-00d8c000 r-xp 00000000 08:02 4675096 /usr/lib/libXext.so.6.4.0
00d8c000-00d8d000 rwxp 0000e000 08:02 4675096 /usr/lib/libXext.so.6.4.0
00d8f000-00dc4000 r-xp 00000000 08:02 4653038 /usr/lib/libGLEW.so.1.3.5
00dc4000-00dc7000 rwxp 00035000 08:02 4653038 /usr/lib/libGLEW.so.1.3.5
02000000-029a5000 r-xp 00000000 08:02 5625089 /usr/lib/nvidia/libGLcore.so.1.0.9746
029a5000-029dc000 rwxp 009a4000 08:02 5625089 /usr/lib/nvidia/libGLcore.so.1.0.9746
029dc000-029e1000 rwxp 029dc000 00:00 0
02e02000-02e7f000 r-xp 00000000 08:02 4675089 /usr/lib/libfreetype.so.6.3.10
02e7f000-02e82000 rwxp 0007d000 08:02 4675089 /usr/lib/libfreetype.so.6.3.10
02e84000-02ea9000 r-xp 00000000 08:02 4675091 /usr/lib/libpng12.so.0.10.0
02ea9000-02eaa000 rwxp 00024000 08:02 4675091 /usr/lib/libpng12.so.0.10.0
02edd000-02ee5000 r-xp 00000000 08:02 4675092 /usr/lib/libXrender.so.1.3.0
02ee5000-02ee6000 rwxp 00007000 08:02 4675092 /usr/lib/libXrender.so.1.3.0
02ee8000-02eec000 r-xp 00000000 08:02 4675100 /usr/lib/libXfixes.so.3.1.0
02eec000-02eed000 rwxp 00003000 08:02 4675100 /usr/lib/libXfixes.so.3.1.0
02ef5000-02efe000 r-xp 00000000 08:02 4675101 /usr/lib/libXcursor.so.1.0.2
02efe000-02eff000 rwxp 00008000 08:02 4675101 /usr/lib/libXcursor.so.1.0.2
02f01000-02f0c000 r-xp 00000000 08:02 4546748 /lib/libgcc_s-4.1.1-20061011.so.1
02f0c000-02f0d000 rwxp 0000a000 08:02 4546748 /lib/libgcc_s-4.1.1-20061011.so.1
02f0f000-02f16000 r-xp 00000000 08:02 4675098 /usr/lib/libXi.so.6.0.0
02f16000-02f17000 rwxp 00006000 08:02 4675098 /usr/lib/libXi.so.6.0.0
02f62000-03043000 r-xp 00000000 08:02 4675086 /usr/lib/libstdc++.so.6.0.8
03043000-03047000 r-xp 000e0000 08:02 4675086 /usr/lib/libstdc++.so.6.0.8
03047000-03048000 rwxp 000e4000 08:02 4675086 /usr/lib/libstdc++.so.6.0.8
03048000-0304e000 rwxp 03048000 00:00 0
0350c000-03523000 r-xp 00000000 08:02 4675112 /usr/lib/libICE.so.6.3.0
03523000-03524000 rwxp 00016000 08:02 4675112 /usr/lib/libICE.so.6.3.0
03524000-03526000 rwxp 03524000 00:00 0
03528000-03530000 r-xp 00000000 08:02 4675113 /usr/lib/libSM.so.6.0.0
03530000-03531000 rwxp 00007000 08:02 4675113 /usr/lib/libSM.so.6.0.0
0357f000-035a0000 r-xp 00000000 08:02 4662446 /usr/lib/libjpeg.so.62.0.0
035a0000-035a1000 rwxp 00020000 08:02 4662446 /usr/lib/libjpeg.so.62.0.0
08048000-08077000 r-xp 00000000 08:03 13683652 /home/XT95/Programmations/C++/Projets/Embya/test/Embya
08077000-08079000 rwxp 0002e000 08:03 13683652 /home/XT95/Programmations/C++/Projets/Embya/test/Embya
08079000-0817a000 rwxp 08079000 00:00 0
08677000-09752000 rwxp 08677000 00:00 0
40000000-40001000 r-xp 40000000 00:00 0 [vdso]
40001000-40002000 rwxp 40001000 00:00 0
40002000-40004000 rwxp 00000000 00:10 1216 /dev/zero
40004000-4000b000 r-xs 00000000 08:02 4709635 /usr/lib/gconv/gconv-modules.cache
4000b000-4000c000 r-xp 00000000 08:02 4709558 /usr/lib/gconv/ISO8859-1.so
4000c000-4000e000 rwxp 00000000 08:02 4709558 /usr/lib/gconv/ISO8859-1.so
4000e000-4000f000 rwxs d0001000 00:10 1219 /dev/nvidia0
4000f000-40010000 rwxs d0c02000 00:10 1219 /dev/nvidia0
40010000-40011000 rwxs 1095f000 00:10 1219 /dev/nvidia0
40011000-40012000 rwxs 0a5b0000 00:10 1219 /dev/nvidia0
40012000-40013000 rwxs cf66f000 00:10 1219 /dev/nvidia0
40013000-40014000 rwxs 00000000 00:08 21364749 /SYSV00000000 (deleted)
40014000-40015000 rwxs 00000000 00:08 21397524 /SYSV00000000 (deleted)
40015000-40017000 rwxp 40015000 00:00 0
40017000-40096000 r-xp 00000000 08:02 4673762 /usr/lib/libGLU.so.1.3.060501
40096000-40097000 rwxp 0007f000 08:02 4673762 /usr/lib/libGLU.so.1.3.060501
40097000-4009a000 rwxp 40097000 00:00 0
4009a000-40198000 r-xp 00000000 08:02 4675080 /usr/lib/libX11.so.6.2.0
40198000-4019c000 rwxp 000fe000 08:02 4675080 /usr/lib/libX11.so.6.2.0
4019c000-40207000 rw-p 4019c000 00:00 0
40207000-40231000 rw-s 00000000 00:08 65536 /SYSV00000000 (deleted)
40231000-40252000 rw-p 40231000 00:00 0
40252000-40552000 rw-s c0000000 00:10 1219 /dev/nvidia0
405fd000-4073f000 rw-s 18446000 00:10 1219 /dev/nvidia0
4073f000-40743000 rw-s 0a5b2000 00:10 1219 /dev/nvidia0
40743000-40843000 rw-s 18edb000 00:10 1219 /dev/nvidia0
40843000-40883000 rw-s cf62e000 00:10 1219 /dev/nvidia0
40883000-40b84000 rw-p 40883000 00:00 0
40bc5000-40bc7000 rw-p 40bc5000 00:00 0
40cab000-40eab000 rw-s 04910000 00:10 1219 /dev/nvidia0
40eab000-40f2b000 rw-s 19fe2000 00:10 1219 /dev/nvidia0
40f2b000-4112b000 rw-s 17a86000 00:10 1219 /dev/nvidia0
41200000-41221000 rw-p 41200000 00:00 0
41221000-41300000 ---p 41221000 00:00 0
bfd1c000-bfd3a000 rwxp bfd1c000 00:00 0 [stack]
bfd3a000-bfd3b000 rw-p bfd3a000 00:00 0
make: *** [x] Abandon |
ou un simple :
Code:
1 2
|
make: *** [x] Erreur de segmentation |
Lorsque je commente ces lignes, je n'ai aucune erreur:
Code:
1 2 3 4 5
|
ObjVertex *Vertex;
ObjNormal *Normal;
ObjTexCoord *TexCoord;
ObjFace *Faces; |
L'erreur de segmentation vient bien de la création du tableau d'objet, car meme si je n'appelle pas la fonction qui allou ObjVertex,ObjNormal etc sa plante.
Merci de votre aide !