La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Herramientas para el acceso directo a memoria en C++

Presentaciones similares


Presentación del tema: "Herramientas para el acceso directo a memoria en C++"— Transcripción de la presentación:

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

2 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.

3 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.

4 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

5 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)

6 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.

7 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.

8 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

9 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.

10 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++

11 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.

12 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.

13 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.

14 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.

15 ¿Preguntas, dudas y comentarios?


Descargar ppt "Herramientas para el acceso directo a memoria en C++"

Presentaciones similares


Anuncios Google