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.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Unhandled exception at 0x00406125 in RayTraceVisual.exe: 0xC00000FD: Stack overflow.

voici un code simplifié qui montre le problème:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.