Memoria est - PowerPoint PPT Presentation

About This Presentation
Title:

Memoria est

Description:

devolver al sistema operativo. Memoria est tica/din mica 1. struct ... la forma correcta es devolver dinamicamente la memoria: free(b); b=&a; x. p. a. 55. NULL ... – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 15
Provided by: infUd
Category:
Tags: devolver | est | memoria

less

Transcript and Presenter's Notes

Title: Memoria est


1
Memoria estática versus dinámicaconEstructuras
2
Memoria dinámica
Qué hacer cuando las variables declaradas son
insuficientes o cuando no se conoce
anticipadamente cuanto almacenamiento será
requerido por el programa?
1. Se crea una variable de tipo puntero. 2. Se le
pide al sistema operativo que asigne más
memoria. 3. El sistema operativo retorna la
dirección a la memoria asignada. 4. Si la
memoria asignada, no se usará más, se puede
devolver al sistema operativo.
3
Memoria estática/dinámica 1
struct str int x struct str
p main() struct str a struct str
bNULL a.x55 b(struct str
)malloc(sizeof(struct str)) b-gtx66
a.xa.xb-gtx
Número de bytes que usa una variable de este tipo
b
NULL
4
Memoria estática/dinámica 2
struct str int x struct str
p main() // se crea la variable
estructurada estatica, "a" que tiene memoria
asignada, // la relacion entre el nombre "a" y la
memoria asignada es permanente struct str a
struct str bNULL a.x55 b(struct str
)malloc(sizeof(struct str)) b-gtx66
a.xa.xb-gtx
b
NULL
5
Memoria estática/dinámica 3
struct str int x struct str
p main() struct str a // se crea la
variable de tipo puntero "b" para apuntar a
variables estructuradas, // no hay memoria
asignada de tipo estructurada, "b" apunta a
nada struct str bNULL a.x55 b(struct
str )malloc(sizeof(struct str)) b-gtx66
a.xa.xb-gtx
a
x
p
6
Memoria estática/dinámica 4
struct str int x struct str
p main() struct str a struct str
bNULL // se puede modificar u obtener el
contenido de los campos de la variable "a", //
para ello se debe usar "." seguida del nombre del
campo a.x55 b(struct str
)malloc(sizeof(struct str)) b-gtx66
a.xa.xb-gtx
b
NULL
a
55
x
p
7
Memoria estática/dinámica 5
struct str int x struct str
p main() struct str a struct str
bNULL a.x55 // se pide, al sistema
operativo, memoria para una variable
estructurada, // la variable puntero "b" es usada
para almacenar la direccion de la nueva //
memoria devuelta, esto significa que b queda
apuntando a esta nueva // variable estructurada
b(struct str )malloc(sizeof(struct str))
b-gtx66 a.xa.xb-gtx
b
NULL
a
55
x
p
8
Memoria estática/dinámica 6
struct str int x struct str
p main() struct str a struct str
bNULL a.x55 // se pide, al sistema
operativo, memoria para una variable
estructurada, // la variable puntero "b" es usada
para almacenar la direccion de la nueva //
memoria devuelta, esto significa que b queda
apuntando a esta nueva // variable estructurada
b(struct str )malloc(sizeof(struct str))
b-gtx66 a.xa.xb-gtx
b
NULL
a
55
x
p
9
Memoria estática/dinámica 7
struct str int x struct str
p main() struct str a struct str
bNULL a.x55 b(struct str
)malloc(sizeof(struct str)) // para acceder a
los campos de la variable estructurada se debe
usar "-gt" // en vez de . b-gtx66
a.xa.xb-gtx
b
NULL
a
55
66
x
p
x
p
10
Memoria estática/dinámica 8
struct str int x struct str
p main() struct str a struct str
bNULL a.x55 b(struct str
)malloc(sizeof(struct str)) // para acceder a
los campos de la variable estructurada se debe
usar "-gt" // en vez de . b-gtx66
a.xa.xb-gtx
b
NULL
a
121
66
x
p
x
p
11
Memoria estática/dinámica 9
struct str int x struct str
p main() struct str a struct str
bNULL a.x55 b(struct str
)malloc(sizeof(struct str)) b-gtx66
a.xa.xb-gtx // si la variable de tipo puntero
se hace apuntar a otra variable estructurada //
por ejemplo a "a", la variable estructurada,
pedida en forma dinamica, // queda sin la
posibilidad de ser usada por el programa
ba
b
NULL
a
121
66
x
p
x
p
12
Memoria estática/dinámica 10
struct str int x struct str
p main() struct str a struct str
bNULL a.x55 b(struct str
)malloc(sizeof(struct str)) b-gtx66
a.xa.xb-gtx // la forma correcta es devolver
dinamicamente la memoria free(b) ba
b
a
55
x
p
13
Memoria estática/dinámica 11
struct str int x struct str
p main() struct str a struct str
bNULL a.x55 b(struct str
)malloc(sizeof(struct str)) b-gtx66
a.xa.xb-gtx free(b) ba // NO es necesario
declarar una variable estructurada como a para
formar una lista
a
55
x
p
14
Memoria dinámica 1
struct str int x struct str
p main() struct str bNULL
// BASTA con declarar una variable tipo
puntero a estructur como b y usar malloc y
free // si el puntero tiene asignado el valor
NULL, se dice que apunta a NULL (nada) // si el
valor del puntero es NULL, se dice que la lista
está vacía
NULL
Write a Comment
User Comments (0)
About PowerShow.com