Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I get an error EStackOverflow when creating packed struct in delphi 7.0

I'm getting an EStackOverflow when creating a packed struct in Borland Delphi 7.0

I want to do the following:

Type

 T4 = packed record
     VT  : integer;
     SKT : byte;
  end;

  T3 = packed record
     O : boolean;     
     TT4 : array of T4;  
  end;

  T2 = packed record
     con  : boolean;
     TT3 : array [64..90,64..90] of T3;
  End;

  TTT = array [64..90,64..90] of T2;


procedure TForm1.Button1Click(Sender: TObject);
var  
   Arr  : TTT;
begin 
        Arr[64,64].con:=false;
end;

But when I run the program and click the button, I get an EStackOverflow error on the begin line of Button1Click.

Can someone help me?

like image 761
john Avatar asked Mar 31 '11 13:03

john


1 Answers

Simple, the created items are too big for the default stack size. Either increase that when creating the thread or allocate the memory on the heap. Either way works.

Just do the math on it:

sizeof(T4) = 5
sizeof(T3) = 5
sizeof(T2) = 3646 // if I'm right
sizeof(TTT)= 2657934
like image 126
0xC0000022L Avatar answered Oct 11 '22 15:10

0xC0000022L