Bonjour,
je travaille sur un projet en infographie sur le lancé de rayons (Ray Trace). Sans rentrer dans les détails, voici le problème que j'ai:
J'ai une classe CPixel qui a 5 int comme attributs (x,y,r,g,b) qui sont les coordonnées et la couleur du pixel.
J'ai un tableau de CPixels à deux dimensions représentant l'ecran. Le problème est que dès que le tableau devient trop grand, il y a une erreur à l'exécution du programme.
Unhandled exception at 0x00406125 in RayTraceVisual.exe: 0xC00000FD: Stack overflow.
voici un code simplifié qui montre le problème:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
#include <cstdlib>
#include <iostream>
using namespace std;
class CPixel
{
private:
int r, g, b;
// coordonnées dans le repere
int x,y;
};
int main()
{
cout << sizeof(CPixel) << endl;
CPixel grille[640][200];
cout << sizeof(grille) << endl;
system("PAUSE");
return(0);
} |
Si je change la taille du tableau à [200][200], il n'y a plus d'erreur.
Tout ça est bizarre car la taille d'une instance de classe CPixel est de 20 octets. Un tableau de 640*200*20 = 2 560 000 octets ne devrait pas poser de problèmes, si ?
J'ai 512 Mo de ram.
merci pour votre aide.
Partager