Jump to content


Photo

MAXSTACKSIZE con registros anidados [SOLUCIONADO]


  • Please log in to reply
1 reply to this topic

#1 tmsanchez

tmsanchez

    Advanced Member

  • Miembros
  • PipPipPip
  • 85 posts

Posted 20 November 2017 - 04:47 PM

Buen día compañeros.
 
Estaba apoyando a un compañero  con estructucuras tipo "Record" y algunas de ellas contenias muchos anidamientos, inclusive algunas de ellas contenían arreglos y al momento de ejecutar el programa  mostraba el error "Stack Overflow".  El problema no era con ninguna llamada recursiva sino que era por el área inicialmente reservada para las estructuras tipo Record.
 
Algo parecido a esto (por razones de confidencialidad no puedo mostrar el caso real):
 


delphi
  1. type
  2.  
  3. TTipoA = record
  4. campo : String;
  5. end;
  6.  
  7. TTipoB = record
  8. campo : String;
  9. tipoA : TTipoA;
  10. end;
  11.  
  12. TTipoC = record
  13. campo : String;
  14. tipob : TTipoB;
  15. end;
  16.  
  17. TTipoD = record
  18. campo : String;
  19. tipoC : TTipoC;
  20. end;
  21.  
  22. TDLineas = record
  23. campo : String;
  24. lista : array[1.100] of TTipoD;
  25. end;
  26.  
  27. TMaestro = record;
  28. campo : String;
  29. lineas : TLineas;
  30. end;

Después de buscar por un rato encontré que se solucionaba cambiando el tamaño que tiene por default asignado para el STACK que es de: 1048576
 
Después de algunos cálculos, sugerí que se cambiara el valor por algo así::
 
{$MAXSTACKSIZE 4194304}

 

La instrucción anterior se agregó en el código del archivo del proyecto (.DPR)

 

Espero les sea de utilidad y les ahorre algo de tiempo.

 

Saludos.


  • 1

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14469 posts
  • LocationMéxico

Posted 20 November 2017 - 06:39 PM

Muchas gracias por el "Tip" amigo tmsanchez  (y) 

 

Saludos


  • 0




IP.Board spam blocked by CleanTalk.