<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif"> 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.<br></div><div class="gmail_default" style="font-family:verdana,sans-serif"> Saludos :-)<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">El 20 de julio de 2016, 17:49, Jesus Reyes A. <span dir="ltr"><<a href="mailto:jesusrmx@gmail.com" target="_blank">jesusrmx@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>


<div><span class=""><blockquote style="margin:0 0 0.80ex;border-left:#0000ff 2px solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>por otra parte, los array siempre son bloques de memoria contigua. </div><div>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.</div><div><br></div><div>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.</div></div></div></div></blockquote><div><br></div></span><div>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. </div><span class=""><div><br></div><blockquote style="margin:0 0 0.80ex;border-left:#0000ff 2px solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div><div><font face="'Courier New',monospace">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.</font></div></div></blockquote><div>Esto me hace ruido, </div><div>estoy pensando en que puedo liberar la memoria y después usar los datos de esa zona de memoria que fué liberada.</div></div></div></div></blockquote><div><br></div></span><div>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.</div><span class=""><div><br></div><blockquote style="margin:0 0 0.80ex;border-left:#0000ff 2px solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div><div><font face="'Courier New',monospace"><br></font></div><div><font face="'Courier New',monospace">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. </font></div></div></blockquote><div>Quizás sea buena idea solicitar que se incluya en la documentación de SetLength que pasa con los datos< </div></div></div></div></blockquote><div><br></div></span><div>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.</div><div><br></div><div>Éste artículo del wiki me parece informativo: <a href="http://wiki.freepascal.org/Dynamic_array" target="_blank">http://wiki.freepascal.org/Dynamic_array</a> necesitamos una versión en Español! :) </div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Jesus Reyes A.</div></font></span></div><br>_______________________________________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus-ide.org">Lazarus-es@lists.lazarus-ide.org</a><br>
<a href="http://lists.lazarus-ide.org/listinfo/lazarus-es" rel="noreferrer" target="_blank">http://lists.lazarus-ide.org/listinfo/lazarus-es</a><br>
<br></blockquote></div><br></div>