Memoria estática y memoria dinámica
Summary
TLDREl guion del video explica los conceptos de memoria estática y dinámica en programación. La memoria estática, asignada durante la compilación, almacena variables globales y estáticas, mientras que la memoria dinámica, gestionada en tiempo de ejecución mediante 'malloc', permite la creación de estructuras de datos como listas enlazadas. Se destaca la diferencia en la asignación de memoria entre ambas, y cómo la pila (stack) y el montículo (heap) son utilizados para almacenar información durante la ejecución de funciones y programas respectivamente. Se menciona también la importancia de los apuntadores para la gestión de la memoria dinámica.
Takeaways
- 💡 La memoria en un programa se divide en memoria estática y dinámica, dependiendo de cómo se asigna y se utiliza.
- 📚 La memoria estática se utiliza para almacenar variables cuyo tamaño se conoce en tiempo de compilación y no se puede reutilizar durante la ejecución del programa.
- 🔍 En la memoria estática, el sistema operativo reserva espacio específico para variables globales y estáticas, y este espacio no se puede liberar o reasignar.
- 🌐 La memoria dinámica se asigna en tiempo de ejecución y se utiliza para variables cuyo tamaño se determina en tiempo de ejecución, como en el caso de estructuras de datos enlazadas.
- 🔑 El uso de malloc() permite reservar memoria dinámica en el montículo (heap), permitiendo la creación de estructuras de datos que crecen según sea necesario.
- 🔄 La memoria dinámica también incluye la pila (stack), que es utilizada para almacenar información sobre las funciones y sus variables locales durante la ejecución del programa.
- 📉 La pila sigue un modelo LIFO (Last In, First Out), donde se guardan y liberan los contextos de las funciones en orden de ejecución.
- 🛠️ Los apuntadores son fundamentales para trabajar con memoria dinámica, permitiendo la manipulación y acceso a estructuras de datos complejas.
- 🛑 La memoria estática ofrece un acceso más rápido a la información debido a que los datos se almacenan de manera contigua, a diferencia de la memoria dinámica.
- ♻️ La memoria dinámica permite una mayor flexibilidad en la asignación y liberación de memoria, lo que es esencial para programas que requieren estructuras de datos de tamaño variable.
Q & A
¿Qué es la memoria estática y cómo se diferencia de la memoria dinámica?
-La memoria estática es la región de memoria que se utiliza para almacenar variables cuya cantidad de información es conocida en tiempo de compilación. Se reserva una cantidad fija de espacio al inicio del programa y no se puede reutilizar durante la ejecución. La memoria dinámica, por otro lado, es asignada en tiempo de ejecución y se puede reutilizar durante la ejecución del programa.
¿Cuál es la utilidad de la memoria estática en un programa?
-La memoria estática se utiliza para almacenar variables globales y estáticas cuya cantidad de datos es conocida y fija. Esto permite al compilador reservar un espacio específico en memoria al inicio del programa, lo que optimiza el acceso a la información ya que se almacena de manera continua.
¿Cómo se representa la memoria dinámica en un programa y cuál es su principal ventaja?
-La memoria dinámica se representa como una región separada en la memoria del programa, donde se pueden reservar y liberar bloques de memoria en tiempo de ejecución. Su principal ventaja es la capacidad de crecer dinámicamente según las necesidades del programa, permitiendo la creación de estructuras de datos complejas y el manejo de grandes cantidades de datos.
¿Qué es el montículo (heap) y cómo se relaciona con la memoria dinámica?
-El montículo es una sección de la memoria dinámica donde se almacenan las estructuras de datos dinámicas como listas enlazadas y matrices. Se utiliza para reservar memoria en tiempo de ejecución mediante funciones como malloc, y permite la creación de estructuras que crecen o se reducen según sea necesario.
¿Qué es la pila (stack) y cómo se diferencia del montículo?
-La pila es una región de la memoria dinámica que se utiliza para almacenar información relacionada con las funciones y sus variables locales. Se diferencia del montículo en que la pila se utiliza para mantener un registro de la ejecución de funciones y sus variables temporales, mientras que el montículo se utiliza para almacenar datos de una manera más permanente y estructurada.
¿Cómo se gestiona la memoria en la pila durante la ejecución de funciones en un programa?
-Cuando una función se ejecuta, su información, como argumentos y variables locales, se almacena en la pila. Cuando la función termina, su información se elimina de la pila y el programa regresa al nivel anterior, permitiendo así una gestión eficiente del estado de ejecución del programa.
¿Qué es un apuntador y cómo se relaciona con la memoria dinámica?
-Un apuntador es una variable que contiene la dirección de memoria de otra variable. Se relaciona con la memoria dinámica porque permite reservar y acceder a memoria en el montículo, permitiendo la creación y manipulación de estructuras de datos complejas.
¿Por qué es importante el uso de apuntadores en programación de C y C++?
-Los apuntadores son fundamentales en C y C++ porque permiten una manipulación directa de la memoria, lo que es esencial para la creación de estructuras de datos complejas y la optimización del rendimiento del programa. También son necesarios para trabajar con memoria dinámica y funciones que toman arreglos o matrices como argumentos.
¿Cuál es la desventaja principal de utilizar memoria dinámica en comparación con memoria estática?
-La desventaja principal de la memoria dinámica es que, a diferencia de la memoria estática que se almacena de manera continua, la memoria dinámica no es necesariamente continua. Esto puede resultar en un acceso menos óptimo a la información, ya que puede requerir 'salto de punteros' para acceder a diferentes partes de una estructura de datos.
¿Cómo se puede liberar la memoria asignada dinámicamente en un programa?
-La memoria asignada dinámicamente se puede liberar mediante funciones como free en C, que permiten devolver el espacio de memoria al sistema operativo, haciendo que esté disponible para futuras asignaciones.
Outlines
💾 Memoria Estática y Dinámica
Este párrafo introduce los conceptos de memoria estática y dinámica en el contexto de la ejecución de programas. Se explica que las variables en un programa requieren almacenamiento de información y que este almacenamiento se divide en memoria estática y dinámica. La memoria estática se utiliza para variables cuyo tamaño se conoce en tiempo de compilación, mientras que la memoria dinámica es para variables cuyo tamaño se determina en tiempo de ejecución. Se ilustra con un ejemplo de un programa simple que declara una variable global y cómo el sistema operativo asigna memoria estática para dicha variable.
🔄 Limitaciones de la Memoria Estática
Este párrafo profundiza en las características de la memoria estática, destacando que una vez que se asigna espacio para variables globales, este no puede ser reutilizado durante la ejecución del programa. Esto significa que la memoria asignada permanece ocupada incluso si ya no se utiliza la variable. En contraste, la memoria dinámica permite la asignación y liberación de memoria en tiempo de ejecución, lo que es útil para estructuras de datos que crecen dinámicamente, como listas enlazadas. Se menciona el uso de la función 'malloc' para reservar memoria dinámica y cómo esta memoria no está necesariamente contigua, lo que puede afectar el rendimiento al acceder a datos分散 en diferentes segmentos de memoria.
🗑️ Liberación de Memoria Dinámica
Este párrafo aborda la capacidad de liberar memoria en la memoria dinámica, una característica que no es posible con la memoria estática. Se describe cómo, a diferencia de la memoria estática, la memoria dinámica permite reutilizar el espacio previamente asignado a variables que ya no son necesarias. Esto es especialmente útil para programas que requieren estructuras de datos que se modifiquen en tamaño durante la ejecución. Además, se explica que la memoria dinámica se divide en dos secciones: el montículo (heap) y la pila (stack), con el montículo siendo donde se almacenan las reservas de memoria realizadas con 'malloc'.
📚 Funcionamiento de la Pila (Stack)
Este párrafo describe el papel de la pila (stack) en la memoria dinámica, que se utiliza para almacenar información sobre las funciones y variables locales en ejecución. Se ilustra cómo la pila se comporta como una estructura de datos de tipo 'pila', donde se agregan y eliminan niveles correspondientes a las funciones invocadas y su ejecución. Se explica que cuando se invoca una función, se agrega un nivel a la pila con información sobre los argumentos y variables locales, y cuando la función termina, se elimina ese nivel, permitiendo el regreso al estado anterior del programa.
🛠️ Configuración del Ambiente de Trabajo para Programación
El último párrafo se desplaza hacia la configuración del entorno de trabajo para la programación, mencionando la necesidad de aprender a usar apuntadores para reservar memoria en el montículo y crear estructuras de datos dinámicas. Se anuncia que en el siguiente vídeo se mostrará cómo configurar e instalar el ambiente de trabajo para programar en C, lo que implicará un enfoque en la utilización de apuntadores y la gestión de la memoria dinámica.
Mindmap
Keywords
💡Memoria Estática
💡Memoria Dinámica
💡Variables Globales
💡Montículo (Heap)
💡Pila (Stack)
💡malloc
💡Variables Locales
💡Apuntadores
💡Estructuras de Datos Dinámicas
💡Optimización del Acceso a Memoria
Highlights
Memorias estática y dinámica son áreas de memoria en la computadora para almacenar información de programas.
La memoria estática se utiliza para almacenar variables cuyo tamaño se conoce en tiempo de compilación.
La memoria dinámica se utiliza para almacenar variables cuyo tamaño se asigna en tiempo de ejecución.
El sistema operativo asigna una región de memoria para cada programa ejecutado.
La memoria estática incluye espacio para variables globales y estáticas.
La memoria dinámica permite la asignación y liberación de espacio durante la ejecución del programa.
El acceso a la memoria estática es más rápido debido a la continuidad del almacenamiento.
La memoria dinámica permite la creación de estructuras de datos que crecen dinámicamente.
El montículo (heap) es la sección de memoria dinámica usada para asignar memoria con malloc.
La pila (stack) es usada para almacenar información sobre la ejecución de funciones y sus variables locales.
Cuando una función termina, su información es eliminada de la pila.
La pila mantiene un registro de la ejecución del programa y las variables locales de cada función.
Los apuntadores son esenciales para trabajar con memoria dinámica y estructuras de datos en C.
Se necesitará aprender a usar apuntadores para reservar memoria en el montículo y crear estructuras de datos dinámicas.
El siguiente vídeo se centrará en la configuración e instalación del ambiente de trabajo para programar en C.
Transcripts
vamos a ver ahora los conceptos de
memoria estática y de memoria dinámica
entonces recordarán que cuando se
ejecuta un programa pues ese programa en
un programa usa variables y las
variables se usan para almacenar
información del programa
entonces esa información se tiene que
asignar se tiene que almacenar en alguna
región en memoria de la computadora ok
entonces básicamente existen dos áreas
de memoria en la cual se puede almacenar
esa información está lo que se conoce
como memoria estática sí y está también
lo que se conoce como memoria dinámica
entonces cuando ustedes se ejecutan su
programa el sistema operativo asigna una
región de memoria para su programa y esa
región se divide básicamente en dos
áreas en esa que es la memoria estática
que básicamente se usa para almacenar
variables que se conoce cuál va a ser el
tamaño total que va a necesitar la
información que se va a guardar en esa
variable en tiempo de compilación ok
está también lo que se conoce como
memoria dinámica y la memoria dinámica
básicamente va a almacenar información
de variables
cuya cuya información se indica que se
asigne cuando se está ejecutando su
programa en tiempo de ejecución
me parece que esto es más fácil
explicarlo que explicarlo haciendo un
dibujito entonces
cómo funciona esto es básicamente de la
siguiente manera en el caso de sem
ustedes por ejemplo pueden hacer un
programa
muy básico que ustedes podrían hacer un
programa que sea de esta manera un pin
con un
maine
sí
y pues este programa no voy a poner todo
el detalle quería aquí solamente el
e-mail pero vamos a suponer que este es
esto es lo que tiene su programa y que
usted declararon aquí arriba una
variable global
vamos a suponer que esta variable global
se llama a y que almacén un número que
es un 5 ok
y de este lado derecho voy a pintar un
recuadro que va a representar la
información va a representar la memoria
que se le asignó a su programa el
sistema operativo les asignó su programa
aquí vamos a poner memoria
y entonces como les comentaba en la
dispositiva anterior pues esta memoria
se va a dividir en dos regiones una
región
que va a ser la memoria estática este de
aquí vamos a llamar la estática
y esta otra de aquí que va a ser la
memoria dinámica
la región de memoria dinámica entonces
cuanto ustedes tienen este programa y lo
complican si se fijan pues el compilador
inmediatamente sabe al ver su código que
esta variable que están declarando aquí
esta variable ah
esta de aquí es una variable global que
es el tipo entero
entonces en la mayoría de los
computadores de 64 bits eso significa
que van a requerir 4 bytes y entonces lo
que hacen cuando se discuta su programa
lo que es el sistema operativo es que
reserva en la región de memoria estática
exactamente 4 bytes
para almacenar esta variable
y si tienen más variables globales va a
ser lo mismo con esas otras variables
globales dependiendo de cuál sea el
tamaño de esa variable google global va
a almacenar exactamente ese tamaño aquí
en la región de memoria estática antes
podría entender a la mejor trabar y
hable desde otra variable ce que sean
globales y que se van a almacenar aquí
en esta región de memoria estática ok
vamos a pintar esta franja aquí para que
quede más claro que a partir de esta
línea comienza la memoria dinámica
entonces el hecho de que el compilador
sea bien sepa de antemano cuánto va a
ocupar el espacio en la variable permite
por ejemplo que pueda almacenar la
información de manera continua y esto en
particular tiene la ventaja de que
optimiza el acceso a esta información
porque como está contigo ustedes cuando
quieren acceder a la información de una
variable en particular saben que la
información de toda esa variable está
almacenada de manera continua en un
bloque en este caso es un entero pero
podría ser otro tipo de dato más grande
es importante que noten que en el caso
de la memoria estática una vez que se
asignó este espacio para algunas de sus
variables globales este espacio ya no
puede ser reutilizado durante toda la
ejecución de su programa ok entonces
esta variable y la región que ocupa en
esta parte de la memoria estática ya no
es posible más adelante en su programa y
liberar este espacio en memoria aunque
ustedes ya no vayan a utilizar esa
variable global ya no pueden liberar
esta memoria y usarla para ocupar y para
almacenar otra variable por ejemplo
entonces desde que inicia su programa
hasta que termina esta región se va a
asignar exclusivamente a la variable a y
ya no se va a poder volver a ya no se va
a poder volver a ocuparla
entonces eso es algo muy característico
de la memoria estática no pueden
reutilizar la las secciones de memoria
que ya les hayan asignado a sus
variables y pues la información de la de
las variables que está almacenando se
sabe de entrada desde desde que arranca
su programa se sabe cuánta información
va almacenar cada una de estas variables
en el caso de la memoria dinámica pues
la cosa es bastante diferente porque la
memoria dinámica en el caso de ce entre
otros casos de bausch se va a crear se
va a usar perdón de usar cuando ustedes
usen en la instrucción malo entonces si
ustedes aquí en su programa tuvieran
esta instrucción malo que vamos a ver
más adelante para qué sirve pero en
esencia es una instrucción que les
permite decirle al sistema operativo que
les reserve un pedazo de memoria el que
ustedes lo indiquen en la sección en la
región de memoria dinámica entonces este
malo podría usarse por ejemplo para
guardar para almacenar cierta cantidad
de bytes
aquí está esa cantidad de bytes se
estarían reservando en esta sección de
la memoria dinámica y ustedes pueden
invocar pues tantas veces como quieran
llamarlo para almacenar diferentes
bloques de memoria la idea de usar esto
este comando malo y la memoria dinámica
es básicamente para representar
estructuras de datos como las que les
mencionaba
en el vídeo anterior
esta estructura de datos que era una
lista no se acuerdan del vídeo anterior
que teníamos que en estas listas tenían
un nodo y estos nodos usualmente apuntan
o tienen alguna algún mecanismo que les
permite saber quién es un nodo es un
modo vecino pues por ejemplo aquí
podríamos tener una lista que tiene el 5
luego tiene el 7 y luego apunta a otro
nuevo que podría ser
el 10 ok
entonces pues esta lista enlazada si
ustedes quisieran representar la vamos a
usar otro color porque estamos dando
mucho rojo
si ustedes quieren representar están
esta lista enlazada lo que podrían hacer
es invocar en malloco tres veces para
reservar cada uno de estos nodos
entonces una primera llamada del malo
que les podría reservar
un segmento de memoria digamos este
pedacito aquí en la memoria dinámica
y a diferencia de la memoria estática
ustedes cuando invocan el comando malo
no tienen garantía de que esa región de
memoria vaya a estar pegada a otra
región que previamente habían reservado
y lo más probable es que cuando invocan
el mal o para guardar para que les cree
una región en memoria que les permite
almacenar este número 7 probablemente lo
haga en otros elementos que ni siquiera
es contigo bueno aquí en la línea ya me
fue un poco chueco pero aquí básicamente
le reservaría a este otro bloque
entonces no necesariamente va a ser
contigo y contigo en la región de
memoria dinámica y pues otra llamada al
comando malo pues podrían usarla para
almacenar otro segmento más
entonces básicamente parece su sala
memoria dinámica para que ustedes puedan
crear estas estructuras dinámicas estas
estructuras de datos dinámicas que
pueden ir creciendo según lo requiera su
programa y la información que necesitan
esas estructuras pues se usa se reservan
usando este comando malo que en el caso
de s
y
algo también importante que de qué tiene
la memoria dinámica con respecto a la
memoria estática es que estas regiones
si se pueden liberar si ustedes ya no
necesitan usar esta información
por ejemplo podría ser que en su
programa ustedes ya reservaron la
información la región la región en los
bloques de memoria para esta lista y
ustedes deciden que en esta lista pues
ya van a borrar este primer nodo
entonces en su programa en alguna parte
indican que van a borrar ese primer nodo
hay una manera de hacerlo
programáticamente y vamos a ver más
adelante cómo se hace eso pero el punto
aquí es que éste llevaron el nodo que
tenía el número 5 y pues ya no necesitan
realmente que esta región de memoria que
habían reservado originalmente siga
ocupada entonces a diferencia de la
memoria estática ustedes si pueden
liberar regiones de memoria d
región de memoria dinámica
y eso les permite entonces que en su
programa si más adelante
pues ustedes a la mejor agregan otro
nuevo nodo de nuevo otra vez no sé un 17
pues eso les permite reutilizar esas
regiones de memoria entonces podrían
adoraba esa región que previamente
liberado por ahora la pueden
ocupar para llenar o para almacenar este
número 17
y eso es algo muy práctico que tiene la
memoria dinámica
la ventaja que tiene con respecto a la
memoria de estática es esta cuestión de
que puedan pueden crear estructuras que
crezcan el tamaño dinámicamente
el problema que hay la desventaja que
hay es que como no son regiones de
memoria contiguas
el acceso a estos pedacitos de
información implica que tengan tienen
que hacer saltitos si si ustedes quieren
saber la información del por ejemplo del
nodo 17 al 10 tienen que usar algo que
se conoce en one en el caso de en el
caso de ese tiene que es algo que se
conoce como apuntador es y vamos a ver
en la siguiente clase que me refiero con
esto pero básicamente tienen que usar
esos apuntador es para que estas
segmento en memoria salten a este otro
segmento si quieren acceder a la
información del 7 y luego el segmento
del 10
hacer esto saltitos
pues puede en general no es muy costoso
pero no es tan óptimo como si tuvieran
toda la región en memoria de de forma
continua
entonces es una cuestión que tiene la
memoria dinámica pero nos permite
almacenar memoria pues
nos puedes reservar les permite reservar
memoria para sus estructuras que crecen
de manera dinámica
entonces
en el caso específico de cm
en el caso específico de la memoria
dinámica se encuentra dividida en dos
partes
entonces ya vimos qué es esto de memoria
estática y les comentaba ahorita de que
básicamente se usa para almacenar
memorias globales pero también la pueden
usar en el bueno en el caso de ese
también se las variables que crean con
el keyword static es decir las variables
que son del tipo estáticas también se
guardan en la memoria estática pero en
el caso de ser pues la memoria dinámica
se divide en dos partes en algo que se
conoce como el montículo el hit y otro
sección que se conoce como la pila el
stack ok entonces igual creo que esto es
mejor verlo con un dibujito que ya vimos
ahorita que entonces en este ejemplo
pues teníamos la memoria estática y ésta
que era la memoria dinámica
ence todo lo que ustedes guardan en
memoria dinámica usando esta instrucción
malo
todo esto todas todas estas variables
que se que se crean usando bueno que
cuyo espacio se ve se resuelve usando un
mal o se guardan en la región que se
conoce como el hip el montículo
si esto es realmente todo lo que
estaríamos invocando aquí el malo todo
está puesto que está aquí
realmente estaría siendo parte en el
caso de ese todo esto sería parte del
hip
ok
entonces
y ya en el caso de ese en concreto
habría otra como parte de la memoria
dinámica habría otra región aquí está la
que quiso y que estoy pintando negro
esta región sería parte de lo que se
conoce como el stack la pila
y entonces hoy te vamos a ver a qué me
refiero con esto del stack que es
exactamente lo que guarda el stack pero
es importante que recuerden que en el
caso de ese el hit básicamente almacena
toda la información de las variables que
crean usando el comando malo
ok en el caso del stack el stack para
explicarlo creo que vale la pena hacer
aquí un pequeño ejemplo
y básicamente si ustedes por ejemplo
tienen su método otra vez su método main
imagínense que su programa es más o
menos de esta forma y el método main a
su vez dentro en el código por aquí
invoca una función a la función f 1 la
mejor esta función de pasa el número 5
por ejemplo
y esta función f 1 vamos a suponer que
pues recibe un número entero
y a su vez esta función f1 invoca a otra
función f 2 con otro número por ejemplo
el 10 y pues ya aquí abajo va a estar
definido f 2
vamos a ponerle aquí el link d
y aquí pues tiene todo su respectivo
código no entonces tenemos estas tres
funciones en nuestro código ok
entonces
en
esto te es la pila esto del stack
básicamente es una región en memoria que
se usa para llevar como que para como
para llevar la cuenta como para llevar y
para guardar básicamente la información
de en qué parte del código están
ejecutando su bueno que parte del código
se está ejecutando y qué variables se
requieren en ese momento sí entonces
vamos a hacer otro dibujito aquí para
representar el stack el stack
básicamente es como es básicamente o
está representado como una pila está
estructura este tipo debate este tipo de
abstracto de datos que les comenté en el
vídeo anterior y la idea es básicamente
que en esto del stack
en la pila
cuando ustedes en su programa se ejecuta
este comando el main
esta función mail perdón en el estado se
va a reservar una región
de memoria y en esta región de memoria
se va a almacenar que están ejecutando
el comando main
perdón de la función main se va a
guardar que argumentos le pasaron a la
función en este caso no le pasamos
ninguno y se va a guardar también si
tiene variables locales
vamos a poner aquí una variable local
para qué queremos claro esto entonces
supongan sé que aquí
antes de que se ejecute la función f 1
por aquí teníamos una línea que estaba
declarando una variable local vamos a
llamarle pues se y se guardaba
originalmente el número 15 por ejemplo
entonces en el stack se guardaría que
cuando ejecuto cuando se ejecuta el
método main que estamos ejecutar métodos
20 en argumentos y que este método main
requiere localmente
localmente requiere una variable del
tipo int que esté esta variable ce con
este valor el 15
y cuando llegue a esta línea de aquí al
f1 vamos a ponerte con otro color
cuando se se ejecuta esta línea de aquí
de f1 entonces lo que hace el stack es
que ahora invoca esta función bueno más
bien en el programa ejecuta esta función
f 1 y lo que hace es que en el estado va
a colocar otro nivel en la pila que va a
ser para la función f 1
y como la función f no le invocamos
pasando el 5 entonces va a guardar esa
información va a guardar en la pila que
invocamos a las funciones de 1 con el
número 5 y si esta función fue una suma
además tuviera también su respectiva
variable local por ejemplo vamos a poner
aquí que tenía un tinte igual a 8
esa información de la variable local que
necesita también se guardaría aquí link
de igual a 8
esto es una representación abstracta de
cómo funciona el programa no en realidad
la estructura se representa un poquito
diferente pero esto les da una idea
intuitiva de qué es lo que hace la pila
entonces finalmente por ejemplo cuando
ya se ejecuta esta tercera línea del
perdón esta función f 2
vamos a poner este con color azul otra
vez
entonces cuando su programa ahora
ejecuta la función f 2 pues ahora tiene
que indicar que está ejecutando la
función f 2 entonces va a ser va a
agregar otro nivel a la pila y ahora va
a decir que invocaron a la función f 2
con el 10 y pues esta función f no
estuviera sus respectivas variables
locales pues también se asignarían en
esta en este nivel
cuando termina de ejecutarse la función
f 2 entonces el programa pues ya no
requiere ya no requieren información de
las variables locales que tenían las
funciones de 2 ni tampoco ya necesita
guardar que ustedes estaban invocando a
la función f 2 con el argumento y es
entonces cuando ya terminaron de
ejecutar está esta función efectos
cuando ya están en la siguiente línea
esta de aquí lo que va a ocurrir es que
él
el programa bueno más bien ayudado por
el sistema operativo lo que va a hacer
es que automáticamente va a liberar este
nivel va a remover este nivel entonces
este nivel de aquí se va a remover de la
pila
y ahora cómo están regrese como ya
terminaron de ejecutar la línea de f2
perdón la línea que está delante la
función de f2
pues lo que va a ocurrir ahora es que
terminando esta línea y terminando en la
ejecución de la función f 1 pues van a
regresar o van a ejecutar ahora esta
siguiente línea donde se habían quedado
originalmente en el main y cuando eso
pase cuando terminan de ejecutar a la
función f 1
otra vez se va a volver a invocar
bueno de la pila se va a volver a
remover es bueno se va a remover este
nivel el que estaba asociado a la
función f 1 y entonces regresan al nivel
que les correspondía del método main y
pues ya nada más tienen la información
en memoria de las variables locales del
método main entonces en esencia pues la
pila sirve básicamente para eso para
llevar un registro de en qué función se
encuentran actualmente del programa qué
variables locales tiene esa función y
cuando se termine la ejecución de esa
función pues pueden inmediatamente
regresar al nivel anterior que es
básicamente la última línea en la que se
estaba ejecutando el programa entonces
esta es nuestra parte de la memoria
dinámica en el caso de ese les digo
recuerden que en el caso de set que
tienen el montículo y la pila
y bueno en este curso vamos a necesitar
vamos a tener que aprender a usar muy
bien la cuestión de los apuntadores como
estamos trabajando en se necesitamos
saber usar los apuntadores para poder
reservar memoria en el montículo y poder
crear dinámicamente estas estructuras de
datos que les comentaba en el vídeo
anterior y que más adelante iremos
viendo muchas otras estructuras de datos
diferentes entonces
y cómo funcionan estos apuntadores es
algo que veremos en la siguiente clase
lo que ahora les voy a mostrar en el
siguiente vídeo es más bien vamos a ver
cómo configurar e instalar su ambiente
de trabajo si quieren programar ence y
eso lo veremos en el siguiente vídeo
Weitere ähnliche Videos ansehen
5.0 / 5 (0 votes)