SlideShare ist ein Scribd-Unternehmen logo
1 von 3
Downloaden Sie, um offline zu lesen
Punteros II
Ya dijimos que podiamos manejar la memoria a voluntad, pero no lo dejamos
muy claro con ejemplos, ahora veamos el manejo de memoria pidiendo y
liberando esta.

C tenia el comando malloc (memory allocate) y free, que pedian memoria y
liberaba respectivamente. C++ incluye los comandos new y delete que facilitan
mucho estos aspectos ejemplo:
//asumamos tenemos una estructura de datos llamada “Estructura”//
Estructura *nuevaEstructura;
nuevaEstructura=(Estructura)malloc(sizeof(Estructura));

Lo anterior lo que hace es pedirle al sistema operativo un espacio en memoria
que tenga el tamaño de “Estructura” y luego le hace un cast a ese sector para
que se “comporte” como un objeto Estructura.

Luego para liberar ese espacio:
Free(nuevaEstructura);

En cambio en C++ esto es mucho más sencillo, el mismo ejemplo anterior:

Estructura *nuevaEstructura;
nuevaEstructura=new Estructura;

El comando new simplifica las cosas en cuanto a problemas de espacio a asignar.
Ahora para liberar la memoria:

delete nuevaEstructura;

Veamos un ejemplo de cómo generar un arreglo de forma dinámica usando
punteros y los comandos new y delete
int **arreglo;
arreglo=new *int[10];
for (int i=0; i<=10;i++)
    {
       arreglo[i]=new int[10];
     }



Lo anterior genera una matriz de (10+1)x(10+1) elementos de tipo entero.
Algo importantísimo que se debe tener en mente al estar trabajando con la
memoria de esta forma es que toda memoria pedida debe ser liberada, el
sistema operativo no ocupara el sector asignado si no le pedimos que lo libere,
así que cada vez que ya no se necesite la memoria almacenada es bueno
liberarla para, de esta forma, no hacer que la memoria ram se acabe.

Usando el mismo arreglo creado dinámicamente explicare como se libera:

for (int i=0; i<=10;i++)
     {
        delete [] arreglo[i] ;
      }
delete [] arreglo;

Al crear dinámicamente una matriz lo que hicimos fue crear un arreglo de
punteros de tipo entero, y en cada casilla de ese arreglo creamos un arreglo de
largo 10:
      *0

      *1
      *2
      .
      .
      .
      .
      *10
Luego cada uno de esos punteros de transformo en un arreglo de enteros de
tamaño 10.

Entonces para poder liberar esa memoria debemos liberar la memoria indexada
por cada uno de esos punteros por eso esta el lazo iterativo:

for (int i=0; i<=10;i++)
     {
        delete [] arreglo[i] ;
      }

que lo que hace es ir liberando la memoria indexada de cada casilla del arreglo,
luego de eso la sentencia:

delete [] arreglo;

libera la memoria almacenada en el arreglo de punteros, dejando la memoria
liberada, lista para ser pedida por nosotros u otro programa corriendo en el
background de nuestro entorno de trabajo.

Nota:
delete [] arreglo; indica libere la memoria que tiene estructura de arreglo

Después de todo ese jugo les puedo decir que también se puede crear un
arreglo de forma dinámica mucho mas simple, pero si no hubiese dado ese
ejemplo no hubiese sido tan explicativo no?, (aunque quizás se enredaron mas
aun, a mí me paso la primera vez que vi ese ejemplo).

Int * arreglo;

arreglo=new int[10][10];



Lero 2005;

Weitere ähnliche Inhalte

Was ist angesagt?

Informe estructuras lineales
Informe estructuras linealesInforme estructuras lineales
Informe estructuras linealeseliezerbs
 
informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento- informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento- Eliu Osseas Puc Puc
 
Apuntes de estructuras nuevo
Apuntes de estructuras nuevoApuntes de estructuras nuevo
Apuntes de estructuras nuevopabesacv
 
Python3000
Python3000Python3000
Python3000wozgeass
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threadsjubacalo
 
Java HashMap
Java HashMapJava HashMap
Java HashMapjubacalo
 
manual de practicas de opengl
manual de practicas de openglmanual de practicas de opengl
manual de practicas de openglAlincita Simon
 
Analisis programacion de pc.
Analisis programacion de pc.Analisis programacion de pc.
Analisis programacion de pc.JOSE2015DANIEL
 
Imagen de disco
Imagen de discoImagen de disco
Imagen de discojuanan10
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datosjubacalo
 

Was ist angesagt? (17)

Informe estructuras lineales
Informe estructuras linealesInforme estructuras lineales
Informe estructuras lineales
 
informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento- informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento-
 
Apuntes de estructuras nuevo
Apuntes de estructuras nuevoApuntes de estructuras nuevo
Apuntes de estructuras nuevo
 
Python3000
Python3000Python3000
Python3000
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threads
 
Java HashMap
Java HashMapJava HashMap
Java HashMap
 
09 command
09 command09 command
09 command
 
Clase c computador
Clase c computadorClase c computador
Clase c computador
 
Kruskal
KruskalKruskal
Kruskal
 
manual de practicas de opengl
manual de practicas de openglmanual de practicas de opengl
manual de practicas de opengl
 
Optimizing a C# engine
Optimizing a C# engineOptimizing a C# engine
Optimizing a C# engine
 
Analisis programacion de pc.
Analisis programacion de pc.Analisis programacion de pc.
Analisis programacion de pc.
 
Lista circulares doblemente enlazadas
Lista circulares doblemente enlazadasLista circulares doblemente enlazadas
Lista circulares doblemente enlazadas
 
Imagen de disco
Imagen de discoImagen de disco
Imagen de disco
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
 
Kruskal
KruskalKruskal
Kruskal
 
Booteo de windows 7 y Centos 7
Booteo de windows 7 y Centos 7 Booteo de windows 7 y Centos 7
Booteo de windows 7 y Centos 7
 

Andere mochten auch (10)

Scriptaculous Fx1
Scriptaculous Fx1Scriptaculous Fx1
Scriptaculous Fx1
 
BCU 2013
BCU 2013BCU 2013
BCU 2013
 
Cocomo II
Cocomo IICocomo II
Cocomo II
 
Metodo putnam - estimacion de costos y tiempo
Metodo putnam - estimacion de costos y tiempoMetodo putnam - estimacion de costos y tiempo
Metodo putnam - estimacion de costos y tiempo
 
Delphi
DelphiDelphi
Delphi
 
Russell - Welcome & Introduction - AFOSR Overview - Spring Review 2012
Russell - Welcome & Introduction - AFOSR Overview - Spring Review 2012Russell - Welcome & Introduction - AFOSR Overview - Spring Review 2012
Russell - Welcome & Introduction - AFOSR Overview - Spring Review 2012
 
Präsentation missethan
Präsentation missethanPräsentation missethan
Präsentation missethan
 
Megatendencias sociales
Megatendencias sociales Megatendencias sociales
Megatendencias sociales
 
Exposicion de marketing UNA Puno
Exposicion de marketing UNA PunoExposicion de marketing UNA Puno
Exposicion de marketing UNA Puno
 
marketing digital
marketing digitalmarketing digital
marketing digital
 

Ähnlich wie Manejo de memoria dinámica en C++ con new, delete, malloc y free

Administración de memoria continuación -matrices estáticas y dinámicas
Administración de memoria continuación -matrices estáticas y dinámicasAdministración de memoria continuación -matrices estáticas y dinámicas
Administración de memoria continuación -matrices estáticas y dinámicasUVM
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamicagusolis93
 
10 funciones de excel “que todos deberíamos aprender”, según la universidad d...
10 funciones de excel “que todos deberíamos aprender”, según la universidad d...10 funciones de excel “que todos deberíamos aprender”, según la universidad d...
10 funciones de excel “que todos deberíamos aprender”, según la universidad d...FelixLuque
 
Look and feel java
Look and feel javaLook and feel java
Look and feel javatiburon_u2
 
Administración de memoria - arreglos estáticos y dinámicos
Administración de memoria - arreglos estáticos y dinámicosAdministración de memoria - arreglos estáticos y dinámicos
Administración de memoria - arreglos estáticos y dinámicosUVM
 
Programación de Videojuegos con Python y Pilas (X)
Programación de Videojuegos con Python y Pilas (X)Programación de Videojuegos con Python y Pilas (X)
Programación de Videojuegos con Python y Pilas (X)Fernando Salamero
 
Switch case (informe_18)
Switch case (informe_18)Switch case (informe_18)
Switch case (informe_18)Carlos Guzmán
 
aplicacion de compactación
aplicacion de compactaciónaplicacion de compactación
aplicacion de compactacióngrupodelostres
 

Ähnlich wie Manejo de memoria dinámica en C++ con new, delete, malloc y free (20)

C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Cplus
CplusCplus
Cplus
 
Administración de memoria continuación -matrices estáticas y dinámicas
Administración de memoria continuación -matrices estáticas y dinámicasAdministración de memoria continuación -matrices estáticas y dinámicas
Administración de memoria continuación -matrices estáticas y dinámicas
 
Tema 11
Tema 11Tema 11
Tema 11
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
10 funciones de excel “que todos deberíamos aprender”, según la universidad d...
10 funciones de excel “que todos deberíamos aprender”, según la universidad d...10 funciones de excel “que todos deberíamos aprender”, según la universidad d...
10 funciones de excel “que todos deberíamos aprender”, según la universidad d...
 
Memoria dinamica en c
Memoria dinamica en cMemoria dinamica en c
Memoria dinamica en c
 
Look and feel java
Look and feel javaLook and feel java
Look and feel java
 
Administración de memoria - arreglos estáticos y dinámicos
Administración de memoria - arreglos estáticos y dinámicosAdministración de memoria - arreglos estáticos y dinámicos
Administración de memoria - arreglos estáticos y dinámicos
 
Programación de Videojuegos con Python y Pilas (X)
Programación de Videojuegos con Python y Pilas (X)Programación de Videojuegos con Python y Pilas (X)
Programación de Videojuegos con Python y Pilas (X)
 
Comandos del MS-DOS Tutorial
Comandos del MS-DOS TutorialComandos del MS-DOS Tutorial
Comandos del MS-DOS Tutorial
 
5 c iterative
5 c iterative5 c iterative
5 c iterative
 
ergonomia
ergonomiaergonomia
ergonomia
 
Hack x crack_sq_linjection
Hack x crack_sq_linjectionHack x crack_sq_linjection
Hack x crack_sq_linjection
 
10 funciones de excel
10 funciones de excel10 funciones de excel
10 funciones de excel
 
Switch case (informe_18)
Switch case (informe_18)Switch case (informe_18)
Switch case (informe_18)
 
Unix 3.1
Unix 3.1Unix 3.1
Unix 3.1
 
Unix 3.1
Unix 3.1Unix 3.1
Unix 3.1
 
aplicacion de compactación
aplicacion de compactaciónaplicacion de compactación
aplicacion de compactación
 

Mehr von Aldo Hernán Zanabria Gálvez

“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...Aldo Hernán Zanabria Gálvez
 
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...Aldo Hernán Zanabria Gálvez
 
Resumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoResumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoAldo Hernán Zanabria Gálvez
 
Clase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesClase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesAldo Hernán Zanabria Gálvez
 

Mehr von Aldo Hernán Zanabria Gálvez (20)

“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
 
mejorando la web guia de html 5
mejorando la web guia de html 5mejorando la web guia de html 5
mejorando la web guia de html 5
 
Guía de Prácticas word beta.pdf
Guía de Prácticas word beta.pdfGuía de Prácticas word beta.pdf
Guía de Prácticas word beta.pdf
 
emprendimiento en la era del conocimiento.pptx
emprendimiento en la era del conocimiento.pptxemprendimiento en la era del conocimiento.pptx
emprendimiento en la era del conocimiento.pptx
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de Programación
 
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
 
didactica
didacticadidactica
didactica
 
Tarea1 aldo zanabria
Tarea1 aldo zanabriaTarea1 aldo zanabria
Tarea1 aldo zanabria
 
Tarea 2 aldo zanabria
Tarea 2 aldo zanabriaTarea 2 aldo zanabria
Tarea 2 aldo zanabria
 
Carolinos del milenio pasado - Puno
Carolinos del milenio pasado - PunoCarolinos del milenio pasado - Puno
Carolinos del milenio pasado - Puno
 
ingenieria de sistemas
ingenieria de sistemasingenieria de sistemas
ingenieria de sistemas
 
Electricidad con recursos renovables
Electricidad con recursos renovablesElectricidad con recursos renovables
Electricidad con recursos renovables
 
Variables
VariablesVariables
Variables
 
Estructura y modelo organizacional estatal
Estructura y modelo organizacional estatal Estructura y modelo organizacional estatal
Estructura y modelo organizacional estatal
 
Calidad de Agua
Calidad de AguaCalidad de Agua
Calidad de Agua
 
Resumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoResumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede Turismo
 
Clase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesClase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y Comunicaciones
 
Plan de Trabajo Integración de la Mujer
Plan de Trabajo Integración de la MujerPlan de Trabajo Integración de la Mujer
Plan de Trabajo Integración de la Mujer
 
peritaciones y tasación puno
peritaciones y tasación punoperitaciones y tasación puno
peritaciones y tasación puno
 
producción en la empresa turística
producción en la empresa turísticaproducción en la empresa turística
producción en la empresa turística
 

Manejo de memoria dinámica en C++ con new, delete, malloc y free

  • 1. Punteros II Ya dijimos que podiamos manejar la memoria a voluntad, pero no lo dejamos muy claro con ejemplos, ahora veamos el manejo de memoria pidiendo y liberando esta. C tenia el comando malloc (memory allocate) y free, que pedian memoria y liberaba respectivamente. C++ incluye los comandos new y delete que facilitan mucho estos aspectos ejemplo: //asumamos tenemos una estructura de datos llamada “Estructura”// Estructura *nuevaEstructura; nuevaEstructura=(Estructura)malloc(sizeof(Estructura)); Lo anterior lo que hace es pedirle al sistema operativo un espacio en memoria que tenga el tamaño de “Estructura” y luego le hace un cast a ese sector para que se “comporte” como un objeto Estructura. Luego para liberar ese espacio: Free(nuevaEstructura); En cambio en C++ esto es mucho más sencillo, el mismo ejemplo anterior: Estructura *nuevaEstructura; nuevaEstructura=new Estructura; El comando new simplifica las cosas en cuanto a problemas de espacio a asignar. Ahora para liberar la memoria: delete nuevaEstructura; Veamos un ejemplo de cómo generar un arreglo de forma dinámica usando punteros y los comandos new y delete
  • 2. int **arreglo; arreglo=new *int[10]; for (int i=0; i<=10;i++) { arreglo[i]=new int[10]; } Lo anterior genera una matriz de (10+1)x(10+1) elementos de tipo entero. Algo importantísimo que se debe tener en mente al estar trabajando con la memoria de esta forma es que toda memoria pedida debe ser liberada, el sistema operativo no ocupara el sector asignado si no le pedimos que lo libere, así que cada vez que ya no se necesite la memoria almacenada es bueno liberarla para, de esta forma, no hacer que la memoria ram se acabe. Usando el mismo arreglo creado dinámicamente explicare como se libera: for (int i=0; i<=10;i++) { delete [] arreglo[i] ; } delete [] arreglo; Al crear dinámicamente una matriz lo que hicimos fue crear un arreglo de punteros de tipo entero, y en cada casilla de ese arreglo creamos un arreglo de largo 10: *0 *1 *2 . . . . *10
  • 3. Luego cada uno de esos punteros de transformo en un arreglo de enteros de tamaño 10. Entonces para poder liberar esa memoria debemos liberar la memoria indexada por cada uno de esos punteros por eso esta el lazo iterativo: for (int i=0; i<=10;i++) { delete [] arreglo[i] ; } que lo que hace es ir liberando la memoria indexada de cada casilla del arreglo, luego de eso la sentencia: delete [] arreglo; libera la memoria almacenada en el arreglo de punteros, dejando la memoria liberada, lista para ser pedida por nosotros u otro programa corriendo en el background de nuestro entorno de trabajo. Nota: delete [] arreglo; indica libere la memoria que tiene estructura de arreglo Después de todo ese jugo les puedo decir que también se puede crear un arreglo de forma dinámica mucho mas simple, pero si no hubiese dado ese ejemplo no hubiese sido tan explicativo no?, (aunque quizás se enredaron mas aun, a mí me paso la primera vez que vi ese ejemplo). Int * arreglo; arreglo=new int[10][10]; Lero 2005;