[Lazarus-es] uso de SetLength

Jesus Reyes A. jesusrmx en gmail.com
Mar Jul 26 07:36:24 CEST 2016


De hecho, no estoy familiarizado con las interioridades del administrador  
de memoria predeterminado de FPC por lo que me llama la atención como en  
los dos primeros logs al compararlos, el valor de TotalFree después del  
primer SetLength en lugar de disminuir aumenta, TotalAllocated me parece  
que consistentemente aumenta después del primer SetLength. Lo que he  
notado en tu test, es que la memoria no regresa al sistema sino hasta que  
termina el programa, y esto es lógico pues las variables que mantienen la  
memoria reservada son locales al procedimiento principal. Esto es  
fácilmente comprobable. Simplemente activa la funcionalidad Heaptrc en la  
opciones del proyecto y comprobaras que al final el programa no presenta  
bloques sin liberar.

Yo creo que una mejor manera de comprobar si la memoria es o no liberada  
de los arrays dinámicos es poner todo el código del procedimiento  
principal en una subrutina, algo así como:

<pre>
begin
   WriteLn('Inicial');
   mostar_heap();
   HacerTests;
   WriteLn('ElFinal');
   mostar_heap();
end.
</pre>

HacerTests es exactamente lo mismo que hacia antes el procedimiento  
principal.

Acá, TotalAllocated antes y después muestra lo mismo. Yo creo (y nunca  
mejor dicho :)) que el administrador de memoria de FPC mantiene  
estructuras o bloques reservados que luego son liberados en algún tipo de  
cache, de manera que no me parece extraño que la memoria que aparentemente  
es reservada y luego liberada no se corresponda exactamente con los  
valores antes y después.

Jesus Reyes A.



En Mon, 25 Jul 2016 20:45:17 -0500, Rafael Bidegain <r.bidegain en gmail.com>  
escribió:

>>
>>>> Podrías por favor compartir tu programa de prueba?.
> si.
> es este:
>
> program ad1;
> ....
> end.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20160726/077b9136/attachment.html>


More information about the Lazarus-es mailing list