Bonjour a tous
Je manipule des pointeurs de type unsigned int ** et GLubyte *
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 unsigned int * * firstTet; firstTet=malloc(nbPass*sizeof(*firstTet)); for(unsigned int i=0;i<nbPass;i++) firstTet[i]=malloc(nbPass*sizeof(*(firstTet[i])));
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 GLubyte * data; for(j=0;j<(*nbPass)&&again;j++) { data = (GLubyte *)firstTet[j]; glReadBuffer(GL_COLOR_ATTACHMENT0_EXT); glReadPixels(0, 0, W, H,GL_RGBA,GL_UNSIGNED_BYTE,data); }or il se trouve que le GLubyte fait exactement un octet tandis que l'unsigned int en fait 4. Et j'écrit systématiquement quatre composante d'un octet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for(unsigned int i=0;i<nbPass;i++) free((firstTet)[0]); free(firstTet);
Je peut accéder aux élément a travers firstTet ou data sans le moindre problème ( et le données sont bien évidemment valide.
Cependant le code ci dessus me fait une :
*** glibc detected *** ./vr: free(): invalid next size (fast): 0x0000000001bc8620 ***
si je commente le glReadPixels, plus de problèmes, mais évidemment je n'ai plus aucune données.
si je commente les free, plus d'erreur, mais bien évidement une grosse fuite de mémoire.
je ne saisis pas le problèmes, j'ai hésité a poster en openGL mais je crois qu'il s'agit plus d'un problème concernant les pointeurs.
De la même manière, peut-on caster un pointeur de unsigned int en un pointeur de char en faisant attention a ce que l'on fait....?
Partager