Your SlideShare is downloading. ×
1.4.2 pila stack  segment
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

1.4.2 pila stack segment

1,203

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,203
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 1.4.2 Pila  (" Stack Segment" )<br />Es un área muy importante manejada directamente por la UCP para alojar datos durante la ejecución del programa.  Su nombre deriva de su propio mecanismo de funcionamiento.  Es un almacén de datos contiguos del tipo LIFO.<br />Frecuentemente es comparada con una pila de platos; el último en ser colocado es el primero en ser retirado.<br />Se usa para muchas cosas, por ejemplo, aquí se almacenan las variables locales automáticas y los datos involucrados en el mecanismo de invocación de funciones, de forma que si se utilizan muchas de estas invocaciones forma anidada o recursiva, la pila crece.  En algunos sistemas, la pila y el montón son contiguos y el crecimiento desmesurado de la pila puede llegar a sobrescribir el área inferior del montón.<br />Los movimientos en el stack son generalmente rápidos, a veces basta una simple instrucción del procesador para almacenar o borrar algo en la pila.  Los objetos colocados en ella se asocian a una duración automática. .  El término se refiere a que es el compilador el que determina cuando se destruyen.  El lenguaje C++ se caracteriza por hacer un uso extensivo de la pila (muchos objetos son " automáticos" por defecto) y el mecanismo de invocación de funciones se basa en su utilización.  Decimos que C++ es un lenguaje orientado a la pila.<br />La localización y desalojo de variables de la pila se realiza de forma automática (son decisiones tomadas por el compilador), no obstante, la directiva register permite indicar que algunas variables que normalmente irían en esta zona, sean alojadas en los registros del procesador.<br />Precisamente este " automatismo" hace que la llamada explícita al destructor de objetos que hayan sido construidos en esta zona sea extremadamente peligroso, ya que si se realiza antes de que el objeto salga de ámbito, el destructor será llamado de nuevo cuando sea liberado el marco de la pila correspondiente a dicho ámbito.  A cambio la pila presenta la comodidad que supone la destrucción automática de los objetos alojados en ella cuando salen de ámbito (con la liberación de la memoria correspondiente), lo que supone que no hay peligro de pérdidas inadvertidas porque el programador olvide destruir el objeto.  Es el siguiente caso:<br />class MiClase { ......} ...<br />{        // un ámbito cualquiera... ....<br />    MiClase objeto1;<br />    ....<br />}        // Ok. objeto1 es destruido al llegar a este punto<br />

×