Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Administración de memoria dinámica C++

Material de apoyo SSD5
by

Lourdes Cahuich

on 7 September 2010

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Administración de memoria dinámica C++

Memoria dinámica Almacén libre Asignación de Memoria Liberación de Memoria Constructores Copy Errores Comunes "heap" es un área de la memoria de un programa que se utiliza dinámicamente Usar memoria dinámicamente significa que la cantidad de memoria requerida para una tarea es especificada en el tiempo de ejecución, en lugar del tiempo de compilación Las variables creadas en el almacén libre tienen dimensión dinámica La dimensión de una variable describe cuánto tiempo permanece la variable alrededor en un programa
También se conoce como ciclo de vida de la variable Dimensión local se crean cuando se llama una función y se destruyen cuando la función regresa son creadas y están disponibles a través del ciclo de vida completo de un programa Dimensión estática tiene su ciclo de vida especificado explícitamente por el programador El proceso de obtener memoria del almacén libre es llamado asignación de memoria new El operador es usado en C++ para asignar memoria dinámicamente El operador new siempre regresa una dirección de memoria delete libera la memoria asignada usando el operador El operador Para liberar, o desasignar memoria, el operador delete necesita conocer qué posición en la memoria deseamos liberar. Para este fin, le proporcionamos un apuntador, que en realidad es sólo la posición que obtuvimos del operador new. define las acciones que necesitan tomarse para crear una copia de un objeto una clase puede contener solo un constructor copy El constructor copy por default hace una copia byte por byte del objeto Existen tres situaciones cuando se hacen copias de objetos Durante una declaración que involucre inicialización
Cuando los objetos son transmitidos por valor
Cuando los objetos son regresados por valor Usar el constructor copy default provisto por el sistema puede ser peligroso en un programa que usa le memoria dinámica. Pueden surgir situaciones donde dos o más objetos mantienen incorrectamente apuntadores a los mismos dato La regla básica para tratar con la asignación dinámica y la desasignación o liberación del espacio es directa:
para cada llamada a new (que consume memoria),
debe haber una llamada correspondiente a delete (que libera memoria) Si nunca se utiliza delete, y se continúa haciendo llamadas a new, el sistema en última instancia fallará cuando se quede sin memoria en el almacén libre Sobreescritura Al tratar con los apuntadores en C++, es fácil a menudo sobrescribir la memoria. Las sobrescrituras son especialmente molestas al usar memoria dinámica. Esto es porque una sobrescritura en el heap daña la información usada para administrar la memoria dinámica. Las sobrescrituras también son difíciles de detectar debido a que por lo general no causan un error inmediatamente Uso de la memoria liberada Nunca es seguro utilizar un apuntador cuya posición de memoria almacenada se ha liberado usando delete. El operador delete, por razones de eficiencia, no limpia el contenido de la memoria que libera Liberación Duplicada de la Memoria Solicitar delete para una posición de memoria que ya ha sido liberada es otro error común con respecto a la administración dinámica de la memoria en C++.
Esto puede parecer un error muy obvio que es fácil de evitar, pero al tener un programa que tenga asignaciones y liberaciones de espacio repartidas a través de una base grande de código, este error es muy común.
La planeación cuidadosa de cuando ocurrirán la asignación y liberación de memoria, es la mejor manera de evitar liberar espacio de la misma memoria dos veces.
Full transcript