septiembre 28, jueves - josemariasola.github.io 2017 k1051 clase #21.pdf · los stack frames...
TRANSCRIPT
Septiembre28,Jueves
Agendaparaestaclase� StackFrames� Heap
� Reservadinámicadememoriadesdeelstack� Reservadinámicadememoriadesdeelheap� Operadornew� Operadordelete� DiferenciasentreHeapyStack
� EstructurasEnlazadas&Nodos� Nodo� Recorridodelistaenlazada
Prof. Esp. Ing. José María Sola 279
Invocacionesafunciones
� 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
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
Reservadinámicadememoriaconlosoperadoresnew&delete
Prof. Esp. Ing. José María Sola 283
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
Prof. Esp. Ing. José María Sola 285
� Repaso:EstructuraEstáticaversusDináminca� Stack,Queue,Array
� EstructuraEnlazada� Stack,Queue,LinkedList
� Problemasqueresuelven� VentajasyDesventajas
IntroducciónaEstructuraEnlazada
Prof. Esp. Ing. José María Sola 286
� 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
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;
};
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
Recorrerlalistaenlazada
Prof. Esp. Ing. José María Sola 290
Node *first = …; Node *p; for(p=first; p!=nullptr; p=p->next) cout << p->value;
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
Ejercicios–Escribalassentencias
Prof. Esp. Ing. José María Sola 292
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
Tareasparalapróximaclase1. ImplementarversionesenlazadasdeStackyQueue,
condeclaracionesydefinicionesenarchivosseparados
2. Leerhttp://josemariasola.wordpress.com/aed/papers#StringPackerAndBlockStream
Prof. Esp. Ing. José María Sola 294