Herramientas para el acceso directo a memoria en C++

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

Curso de java básico (scjp)
Unidad 15 Características de C++ no relacionadas con el DOO.
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Estructuras de Datos (ARRAYS)
Direcciones, Arreglos y Argumentos de Funciones
Funciones. Programación, Algoritmos y Estructuras de Datos.
Tipos de Datos Básicos y Estructurados
INFORMATICA I Arreglos 1 CLASE 17.
Tema 1. Introducción a la programación (Lenguaje java).
Funcionamiento, programación
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
VECTORES.
Implementación de Listas
Objetos y Clases en Java
Estructuras de Datos Punteros y algo más.
Estructuras de datos M.I.A Daniel Alejandro García López.
Unidad 3 Punteros.
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Vectores en java.
Manipulación de caracteres e hileras de texto
Conceptos Básicos de Java
Programación Orientada a Objetos usando C++
Material de apoyo Unidad 2 Estructura de datos
POO Java Módulo 3 Elementos de programas Identificadores
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Extracto del material disponible en Estrategias para la recolección de basura (Garbage Collection.
Tema 6: Clases Antonio J. Sierra.
Unidad I Java y C++ : Similitudes y diferencias
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
SCJP Sun Certified Programmer for Java 6
LENGUAJE “C” Programación.
Introducción a los punteros
Arreglos.
M.C. Juan Carlos Olivares Rojas
Archivos Binarios Lenguaje C Prof. Gonzalo Pastor.
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
Estructuras.
Programación I Técnico Universitario en Web Dpto. de Informática FCFMyN - UNSL -11-
PUNTEROS Ing Anghello Quintero.
Informática Ingeniería en Electrónica y Automática Industrial
Aplicación de estructuras de datos
Herramientas de polimorfismo y herencia en C++
Manejo de Punteros y objetos en memoria dinámica en C++
CLASE 8 Ruben Martinez c Tipo Inferencia Es un mecanismo donde por el tipo las especificaciones se pueda omitir a menudo totalmente, si es.
APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
TEORIA DE LA INFORMACION INGENIERO ANYELO QUINTERO.
Informática Ingeniería en Electrónica y Automática Industrial
Memoria estática versus dinámica con Estructuras
Programación en C para electrónicos
Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.
PUNTEROS Y REFERENCIAS
Constructor  Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar.
APUNTADORES.
Los punteros Programación modular.
Programación Procedural y Recursiva en C++
Punteros Recomendado: 1. Nivelación Funciones
Unidad II Aplicaciones con Arreglos en Java y C++
Computación II Capitulo VII Punteros. Presentación de la unidad Objetivos: –Ser capaces de utilizar punteros. –Comprender las relaciones entre punteros,
ARREGLOS (arrays).
1 Unidad II Aplicaciones con Arreglos en Java y C++ M.C. Juan Carlos Olivares Rojas.
Computación I. CI-2125 Tema VII
PUNTEROS EN EL LENGUAJE C
Laboratorio de programación
MEMORIA DINÁMICA.
PUNTEROS. Los punteros son de amplia utilización en programación y muchos lenguajes permiten la manipulación directa o indirecta de los mismos. Su razón.
Tema 1. Estructuras de datos Objetivo: Objetivo: El alumno resolverá problemas de almacenamiento, recuperación y ordenamiento de datos y las técnicas de.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
GENERALIDADES DEL NIVEL ISA DE LA MAQUINA VIRTUAL JAVA (JVM) Generalidades del nivel ISA.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Transcripción de la presentación:

Herramientas para el acceso directo a memoria en C++ M.C. Juan Carlos Olivares Rojas

Agenda Apuntadores en C++. Relación entre arreglos y apuntadores en C++. Aritmética de apuntadores en C++. Memoria estática y dinámica Creación y uso de arreglos y objetos dinámicos en C++. Comparación con JAVA.

Apuntadores en C++. Los apuntadores son variables que almacenan direcciones en lugar de datos. Los apuntadores permiten apuntar hacia distintas localidades de memoria, por lo que se utilizan para generar memoria dinámica.

Apuntadores en C++ Los apuntadores pueden ser de cualquier tipo, se declaran anteponiendo un *: int *puntero; //apuntador a un entero char *cad; //apuntador a caractér void *puntero; //puntero a cualquier tipo de dato

Relación entre arreglos y apuntadores en C++. La relación que existe entre un arreglo y un apuntador es que el nombre de un arreglo representa una dirección de memoria y los subíndices representan un desplazamiento. Las cadenas son arreglos de caracteres (apuntador a un carácter)

Aritmética de apuntadores en C++. La aritmética de apuntadores significa poder desplazarse a través de la memoria. Sólo se pueden utilizar los operadores +,-, ++, -- y otros operadores de manera indirecta. El operador & se utiliza para obtener la dirección de una variable.

Memoria estática y dinámica Los apuntadores se utilizan para crear memoria dinámica. De manera predeterminada, las variables se crean con memoria estática en lo que se conoce como tiempo de ejecución, por eso se debe de definir un tamaño máximo en los arreglos.

Memoria Dinámica La memoria dinámica se puede crear simplemente teniendo un tipo de dato puntero. Por ejemplo para declarar un arreglo de enteros dinámicos, quedaría así: int *arreglo; //no se especifica tamaño

Memoria Dinámica En C se utiliza la función malloc para pedir memoria y free para liberarla. arreglo = (int *) malloc(N * sizeof(int)); free(arreglo); En Java no existe como tal los punteros pero se puede utilizar memoria dinámica.

Memoria Dinámica En C++ al igual que Java se utiliza el operador new para pedir memoria dinámica. De hecho en Java los arreglos deben crearse con el operador new: int a[5] = new int[5]; //Java int a[] = new int[N]; //C++

Memoria Dinámica delete [] a; En Java no existe el concepto de liberar memoria ya que se hace de manera automática con el recolector de basura. La memoria dinámica sirve para crear otros tipos de ADT más especializados como listas, pilas, colas, árboles, etc.

Memoria Dinámica Al borrar un elemento se regresa la memoria que se pidió, por eso es importante liberar la memoria, ya que si no se hace se pierde ese pedazo. Si se crea memoria dinámica para un objeto se puede llamar a su constructor para que lo inicialice.

Creación y uso de arreglos y objetos dinámicos en C++ Creación y uso de arreglos y objetos dinámicos en C++. Comparación con JAVA. En Java no existe el concepto de puntero. Se pueden crear memoria dinámica. En objetos al liberar memoria se invoca de manera automática al destructor en C++ y al método finalize() y variantes en Java.

Actividad Realizar un programa que cree un arreglo con la mayor cantidad de números primos. El usuario deberá introducir el tamaño del arreglo y este deberá hacerse a través de memoria dinámica. El límite lo marcará el tamaño de la memoria disponible.

¿Preguntas, dudas y comentarios?