Ir al contenido


Foto

MAXSTACKSIZE con registros anidados [SOLUCIONADO]


  • Por favor identifícate para responder
1 respuesta en este tema

#1 tmsanchez

tmsanchez

    Advanced Member

  • Miembros
  • PipPipPip
  • 85 mensajes

Escrito 20 noviembre 2017 - 04:47

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
  • 14.448 mensajes
  • LocationMéxico

Escrito 20 noviembre 2017 - 06:39

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

 

Saludos


  • 0




IP.Board spam blocked by CleanTalk.