[Lazarus-es] uso de SetLength

Jesus Reyes A. jesusrmx en gmail.com
Mie Jul 20 17:49:14 CEST 2016


> 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.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20160720/da59285b/attachment.html>


More information about the Lazarus-es mailing list