Desallocation d'un tableau a trois dimension - C++ - Programmation
Marsh Posté le 17-04-2005 à 17:52:33
bin non, pour un new tu dois avoir le delete associé, donc vala
toi tu fais un importeur de données 3d
Marsh Posté le 17-04-2005 à 17:54:19
Tu dois faire autant de delete que de new si tu veux libérer toute la mémoire.
Arf trop tard
Marsh Posté le 17-04-2005 à 18:06:29
oh le massacres
tu veux pas au moins utiliser une banale
struct XYZ { float x; float y, float z };
pour limiter la fragmentation mémoire ?
Marsh Posté le 19-04-2005 à 02:06:31
Taz a écrit : oh le massacres |
Je comprend ce que tu veux dire mais tu n'es pas assez precis il me semble, car
"new float[3]" est identique à "new XYZ" en ce qui concerne la fragmentation du moins.
le mieux dans ce cas pour eviter la fragmentation est ceci
Code :
|
Marsh Posté le 19-04-2005 à 08:24:47
Je suis en effet en train de réaliser un importeur de fichier ase (3ds au format ascii) pour mon projet de master premiere annee. Je dois en fait faire un salon de discussion en 3d.
J'avais pensé aux structs mais je préfère utiliser un tableau pour rendre plus simple l'utilisation des commandes opengl. Par exemple, glVexter3fv( tableau3 );
Je vais essayer la solution de maxmoi_la.
Merci pour toutes vos réponses.
(^-^)
Marsh Posté le 19-04-2005 à 08:39:22
glVertexMachin, c'est le mal
regarde plutot au moins du coté des glArray ou chaipuquoi
Marsh Posté le 19-04-2005 à 09:03:44
non c'est pas pareil, mais bon, je crois bien que t'es à des centaines d'années lumières de ces problèmes de fragmentation mémoire ... quel massacre
Marsh Posté le 19-04-2005 à 09:04:29
d'ailleurs, je suis con, nul besoin de struct, tu peux allouer d'un coup N tableau de 3 éléments.
Marsh Posté le 19-04-2005 à 09:13:14
LoL, c'est vrai pour les glVertex mais j'utilise glCallList et du coup ca commence a devenir bien compliqué avec les glArray. Faut que je fasses une version qui marche et j'essayerai apres d'optimiser...
Sinon j'ai fait un delete[] tableauUVFaces.
http://drouet.aurelien.free.fr/PSTL/
Marsh Posté le 19-04-2005 à 09:29:32
coucou tout le monde j'ai un petit doute pour supprimer le tableau de la mémoire, ca serais pas plutot du genre :
<code>
for(int i=0;i<nbUVFaces;i++)
for(int j=0;j<3;j++)
for(int k=0;k<3;k++)
free(tableauUVFaces[i][j][k]);
</code>
c'est peut etre pas ca mais c'est juste pour savoir
Marsh Posté le 19-04-2005 à 10:05:58
ignoble
Code :
|
un petit exemple avec 2 techniques pour faire des allocations plus sympa pour la fragmentation de la mémoire.
1) vu que la taille des éléments interne est fixe (pour toi double[3]) et bien il faut s'en servir -> m1
2) j'avais dans un coin un truc pour allouer une matrice de manière contigüe. une matrice2D de double[3] et voilà, c'est plié.
Marsh Posté le 17-04-2005 à 17:51:13
Salut,
J'ai un petit soucis au niveau de la désallocation d'un tableau a trois dimension.
J'initialise mon tableau comme ceci :
tableauUVFaces = new float**[nbUVFaces];
for (i=0; i < nbUVFaces; i++) {
tableauUVFaces[i] = new float*[3];
for (j=0; j < 3; j++) {
tableauUVFaces[i][j] = new float[3];
}
}
et ensuite je l'efface comme cela :
delete[] tableauUVFaces;
Cela ne me donne aucune erreur mais je me demande si ca me libere bien ainsi tout la mémoire.
Si quelqu'un pouvait m'éclairer à se sujet, je lui en serais très reconnaissant...
Je n'ai pas trouvé de réponse à ce sujet sur d'autre posts mais j'ai peut etre mal cherché...
Merci à celui qui me répondra.
+++