[RESOLVED] Stack Overflow
Ok, it seems I have made a beginners error. I have the following structures defined in my h file
Code:
typedef struct {
unsigned char B;
unsigned char G;
unsigned char R;
unsigned char A;
} pix32;
struct FinalTGAFile
{
char IDLen; //length of ID field
char MapType; //0=none, 1=present
char ImgType; //0=none, 1=c-map, 2=true,
short FirstColor; //where to start in colormap
short MapLen; //number of colors to set
char EntrySize; //number of bits per color entry
short Xorigin;
short Width;
short Height;
char Depth;
char Descriptor;
pix32 Pixel[];
};
The cpp code extract is as follows
Code:
//Create a new TGA header
FinalTGAFile tgaCell;
memset(&tgaCell,0, 18);
tgaCell.ImgType = 2;//true-color
tgaCell.Height = 100;
tgaCell.Width = 4800;
tgaCell.Depth = 32;//has alpha
tgaCell.Descriptor = 32;
//extract of code that moves the pixels around
int j=0;
int p;
int count=0;
for(int y=0; y<100;y++)
{
if(y<256)
{
int j=y*1024;
for(int h=0;h<18;h++)
{
for (p=j; p<j+1024;p=p+4)
{
//Eventually this will bomb out when count gets too large
tgaCell.Pixel[count].B = final].finalimage[p];
tgaCell.Pixel[count].G = final[h].finalimage[p+1];
tgaCell.Pixel[count].R = final[h].finalimage[p+2];
tgaCell.Pixel[count].A = final[h].finalimage[p+3];
count++;
I then basically take a whole series of tga files and stitch them together by filling up the pix32 structure with pixels.
Based on reading I have done it appears this is because this array is getting put on the stack (rather than heap) and so at some point in time it is larger than the max allowed memory.
However I am unsure of the method used to allocate this to the heap using the structures I have created. Can someone please provide some guidance on how to best do this..
Regards, Andrew