5.13.4.3 Gestión de Memoria (8 horas) [Habilidades AG-C09,AG-C12]

Referencias Bibliográficas: [Meyers, 2014,Stroustrup, 2013]

Temas

  1. Asignación y acceso de bajo nivel a estructuras de datos de alto nivel como tipos de datos básicos, arreglos n-dimensionales, vectores, registros y objetos
  2. Retorno de procedimiento como mecanismo de desasignación automática para elementos de datos locales en la pila
  3. Gestión manual de memoria: asignar, desasignar y reutilizar memoria del montón
  4. Gestión automática de memoria: recolección de basura (garbage collection) como técnica automatizada usando la noción de alcanzabilidad (reachability)
  5. Lvalues y rvalues en C++11/14/17/20.
  6. Constructores de movimiento y operadores de asignación de movimiento.
  7. Referencias a valor-r y colapso de referencias.
  8. Patrón RAII (Adquisición de Recursos es Inicialización).
  9. Personalización de punteros inteligentes.
  10. Detección y prevención de fugas de memoria.

Aprendizaje esperado (Learning Outcomes)

  1. Explicar por qué ocurren las fugas de memoria (memory leaks) y los problemas de punteros colgantes (dangling pointers), y qué puede hacer un programador para evitarlos/corregirlos [Usar]
  2. Explicar cómo las implementaciones de lenguajes de programación típicamente organizan la memoria en secciones de datos globales, texto, montón y pila, y cómo características como recursión y gestión de memoria se mapean a este modelo de memoria [Evaluar]
  3. Explicar cómo se ejecuta una construcción central del lenguaje, como abstracciones de datos y abstracciones de control [Evaluar]
  4. Implementar semántica de movimiento para optimización de recursos [Usar].
  5. Diseñar clases RAII para gestión de recursos segura ante excepciones [Usar].

Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM