[Lazarus-es] uso de SetLength

Juan M. Puertas soft.sirius en gmail.com
Mie Jul 20 18:28:35 CEST 2016


 Según el artículo de la Wiki, cuando se sale del procedimiento o función
en el que se encuentra SetLength, la memoria se libera automáticamente.
 Saludos :-)

El 20 de julio de 2016, 17:49, Jesus Reyes A. <jesusrmx en gmail.com> escribió:

> por otra parte, los array siempre son bloques de memoria contigua.
> Lo que de alguna manera me llama la atención es que si cada función tiene
> su pila (no sé si realmente es así, creo que hace muchos años era así) y
> ese array está en la pila de la función esta en algún momento se podría
> terminar y SetLength debería devolver error.
>
> Si el array dinámico de la función no se crea en la pila de la función
> sino en el lugar de las variables públicas, el problema quizás sea menor,
> pero de todas maneras se debería comprobar si se pudo expandir el array.
>
>
> Es que "pila" puede ser un término confuso pues al parecer "apilar" se
> puede traducir tanto como stack pero también como heap. Pero bueno, si
> estoy en lo correcto y según tus comentarios, entonces me parece que con
> "pila" te refieres al stack de la función y no al heap. No, no esta en el
> stack (Perdón por el cambio de palabras pero me parece que es un poco mas
> claro así), el resultado de la función por ser un array dinámico se
> comporta como una referencia.
>
>
>
>> Y si en algún punto quieres tener la conciencia tranquila con respecto a
>> la memoria reservada dinámicamente puedes especificar 0 como número de
>> elementos y eso "limpiara" el array, aquí cleared se usa para indicar que
>> la memoria usada por el array será liberada.
>>
> Esto me hace ruido,
> estoy pensando en que puedo liberar la memoria y después usar los datos de
> esa zona de memoria que fué liberada.
>
>
> Claro, lo mismo pasa con cualquier otra zona de memoria liberada
> dinámicamente, si sabes cual era la dirección de memoria puedes acceder a
> ella. Eso no significa que sea algo seguro de hacer, ahí ya no hay
> garantías, el contenido anterior pudo ya haber sido sobre escrito con algo
> mas.
>
>
>
>> Lo que no dice es que aumentar el número de elementos del array no
>> "elimina" los elementos existentes, sino que solo hace más espacio para la
>> cantidad extra deseada de elementos.
>>
> Quizás sea buena idea solicitar que se incluya en la documentación de
> SetLength que pasa con los datos<
>
>
> Bueno, en la documentación de SetLength no esta toda la información, pero
> si buscamos en la información referente a los arrays dinámicos la cosa
> cambia. Lo que no es mala idea es que se incluya en la documentación de
> SetLength un enalce hacia la documentación de los arrays dinámicos.
>
> Éste artículo del wiki me parece informativo:
> http://wiki.freepascal.org/Dynamic_array necesitamos una versión en
> Español! :)
>
> Jesus Reyes A.
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus-ide.org
> http://lists.lazarus-ide.org/listinfo/lazarus-es
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20160720/43616c1f/attachment.html>


More information about the Lazarus-es mailing list