Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames...
Transcript of Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames...
![Page 1: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/1.jpg)
Septiembre28,Jueves
![Page 2: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/2.jpg)
Agendaparaestaclase� StackFrames� Heap
� Reservadinámicadememoriadesdeelstack� Reservadinámicadememoriadesdeelheap� Operadornew� Operadordelete� DiferenciasentreHeapyStack
� EstructurasEnlazadas&Nodos� Nodo� Recorridodelistaenlazada
Prof. Esp. Ing. José María Sola 279
![Page 3: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/3.jpg)
Invocacionesafunciones
![Page 4: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/4.jpg)
� LosStackFrames(activationrecords)sonloselementosdelaCallStack(PiladeInvocaciones)
� Cadastackframesecorrespondealainvocacióndeunafunciónquetodavíanofinalizó
� Eneltopestálafunciónqueseestáejecutando� Elcontenidoesdependientedelaplataforma,peroen
general,unstackframemantiene:� Variableslocalesoautomáticas� Argumentos� Direcciónderetornoparacontinuarlaejecución
� Cadainvocaciónafunciónagrega,i.e.Push,unnuevoStackFrame(ActivationRecord)
� Cadaretornodefunciónsaca,i.e.Pop,unstackframe,dejandoelvalorderetornodisponible
� ElStackPointer(SP)apuntaalacima,Top,delapila.� ¿Quéeselstackoverflow?� ¿Esposibleretornarunpunteroaunavariablelocal?.
StackFrame(Ac3va3onRecord)CuadrodePila(RegistrodeAc3vación)
Prof. Esp. Ing. José María Sola 281
Bottom Stack
Top SP
![Page 5: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/5.jpg)
Ejercicio–CallStack:Basadoenhoja6deMemoryManagementinC
� Dadoelcallstack1. main2. foo3. bar
� ¿Cuántosstackframeshay?� ¿Cuálfunciónllamóacuál?� Dibujeundigrafoquerepresenteelcallstackylasrelación"invocó-a"
� ¿Cuántasfuncioneshayenejecución?� ¿Cuáleslainvocaciónactiva?� Diagrameycodifiqueunprogramaquesecorrespondaaestecallstack.
Prof. Esp. Ing. José María Sola 282
![Page 6: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/6.jpg)
Reservadinámicadememoriaconlosoperadoresnew&delete
Prof. Esp. Ing. José María Sola 283
![Page 7: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/7.jpg)
Reserva,AnalogíaconRestarurant� Llamadoparahacerunareserva
� ¿Quésepide?¿Nombre?¿Cantidad?� ¿Quéseregistra?� ¿Quéseretorna?� new
� Llamadoparacancelarreserva� delete
� DiferenciasconStack� Duración� Nombre� Liberación� GarbageCollector
Prof. Esp. Ing. José María Sola 284
![Page 8: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/8.jpg)
Prof. Esp. Ing. José María Sola 285
![Page 9: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/9.jpg)
� Repaso:EstructuraEstáticaversusDináminca� Stack,Queue,Array
� EstructuraEnlazada� Stack,Queue,LinkedList
� Problemasqueresuelven� VentajasyDesventajas
IntroducciónaEstructuraEnlazada
Prof. Esp. Ing. José María Sola 286
![Page 10: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/10.jpg)
� Otrosnombresparadata� car� datos� entry,entrada� payload,carga� info,información� val,value,valor
� Otrosnombresparalink� cdr� enlace� next,siguiente,próximo� nxt,sgte
¿QuéesunNodo?node=(data,link)
Prof. Esp. Ing. José María Sola 287
![Page 11: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/11.jpg)
RepresentacionesdeNodos
Prof. Esp. Ing. José María Sola 288
// Node of int struct Node{ int value; Node *next;
};
// Node of Type struct Node{ Type value; Node *next;
};
// Template Node struct Node<T>{ T value; Node<T> *next;
};
![Page 12: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/12.jpg)
Node first_node; first_node.value = 'a'; Node *p0 = &first_node; Node *p1 = new Node; (*p1).value = 'b'; p1->value = 'b'; p0->next = p1; Node *p2 = new Node; p2->value = 'c'; p2->next = p0; p1->next = p2; // Recorrido Node *p=p0; // actual do{ cout << p->value; p=p->next; }while( p != p0);
Ejemplo:TresNodosEnlazados
Prof. Esp. Ing. José María Sola 289
![Page 13: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/13.jpg)
Recorrerlalistaenlazada
Prof. Esp. Ing. José María Sola 290
Node *first = …; Node *p; for(p=first; p!=nullptr; p=p->next) cout << p->value;
![Page 14: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/14.jpg)
Ejercicio–DibujeeldiagramaparaelsiguientecódigoC++Node *p0 = new Node; po->value ='0'; Node *p1 = p0->next = new Node; p1->value ='1'; Node *p2 = p1->next = new Node; p2->value ='2'; p2->next = p1;
Prof. Esp. Ing. José María Sola 291
![Page 15: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/15.jpg)
Ejercicios–Escribalassentencias
Prof. Esp. Ing. José María Sola 292
![Page 16: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/16.jpg)
Términosdelaclase#DefinircadatérminoconlabibliograVa� SeccionesdeMemoria
� Parteestática� DatosestáticosóPilaEstática� CódigoóTexto� Partedinámica� Stack(Pila)
� CallStack� CallStack� Variablesautomáticas� Argumentos� IP� StackFrame(Activation
Record)
� Stackpointer� Diagramadecallstackylas
relación"invocó-a"� Invocaciónactiva� Push� Pop
� Heap(Montículo)� Puntero� Declaracióndepuntero� Operador*� Operador&� Operadornew� Operadordelete
21
Prof. Esp. Ing. José María Sola 293
![Page 17: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/17.jpg)
Tareasparalapróximaclase1. ImplementarversionesenlazadasdeStackyQueue,
condeclaracionesydefinicionesenarchivosseparados
2. Leerhttp://josemariasola.wordpress.com/aed/papers#StringPackerAndBlockStream
Prof. Esp. Ing. José María Sola 294
![Page 18: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/18.jpg)
![Page 19: Septiembre 28, Jueves - josemariasola.github.io 2017 K1051 Clase #21.pdf · Los Stack Frames (activation records) son los elementos de la Call Stack (Pila de Invocaciones) Cada stack](https://reader031.fdocuments.es/reader031/viewer/2022041321/5e16e8609637a2725b090f5c/html5/thumbnails/19.jpg)