Referencias Bibliográficas: [Stroustrup, 2013,Deitel and Deitel, 2017]
Temas
- Acceso directo, indirecto e indexado a ubicación de memoria
- Representación en tiempo de ejecución de abstracciones de datos como variables, arreglos, vectores, registros, elementos de datos basados en punteros como listas enlazadas y árboles, y objetos
- 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
- Retorno de procedimiento como mecanismo de desasignación automática para elementos de datos locales en la pila
- Gestión manual de memoria: asignar, desasignar y reutilizar memoria del montón
- Gestión automática de memoria: recolección de basura (garbage collection) como técnica automatizada usando la noción de alcanzabilidad (reachability)
- Distribución de memoria (pila, montón, estática).
- Aritmética de punteros y operaciones.
- Asignación dinámica de memoria (new/delete).
- Fugas de memoria y punteros colgantes.
- Punteros inteligentes (unique_ptr, shared_ptr).
Aprendizaje esperado (Learning Outcomes)
- 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]
- 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]
- Explicar cómo se ejecuta una construcción central del lenguaje, como abstracciones de datos y abstracciones de control
[Evaluar]
- Implementar RAII para la gestión de recursos [Usar].
- Depurar errores relacionados con memoria en programas
C++ [Usar].
Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM