Asignación de memoria dinámica

La asignación de memoria dinámica  es un método de asignación de RAM de computadora para objetos en un programa, en el que la asignación de memoria para un objeto se lleva a cabo durante la ejecución del programa .

Con la asignación de memoria dinámica, los objetos se colocan en los llamados. “ heap ” ( eng.  heap ): al construir un objeto, se indica el tamaño de la memoria solicitada para el objeto y, si tiene éxito, el área de memoria asignada, en términos relativos, se “elimina” del “ heap ”, convirtiéndose inaccesible durante las operaciones posteriores de asignación de memoria. Una operación que tiene un significado opuesto es la liberación de la memoria previamente ocupada por algún objeto: la memoria liberada, también condicionalmente hablando, se devuelve al " montón " y queda disponible durante otras operaciones de asignación de memoria.

A medida que se crean nuevos objetos en el programa, la cantidad de memoria disponible disminuye. De ahí la necesidad de liberar constantemente la memoria previamente asignada. En una situación ideal, el programa debería liberar por completo toda la memoria que se requiere para el trabajo. Por analogía con esto, cada subrutina ( procedimiento o función ) debe asegurar la liberación de toda la memoria asignada durante su ejecución. La gestión inadecuada de la memoria conduce a los llamados. " fugas " de memoria, cuando la memoria asignada no se libera. Múltiples fugas de memoria pueden agotar toda la RAM e interrumpir el sistema operativo.

Otro problema es el problema de la fragmentación de la memoria. La asignación de memoria ocurre en bloques : fragmentos continuos de RAM (por lo tanto, cada bloque tiene unos pocos bytes consecutivos ). En algún momento, es posible que el montón simplemente no tenga un bloque de un tamaño adecuado, e incluso si hay suficiente memoria libre para acomodar el objeto, la operación de asignación de memoria fallará.

Para administrar la asignación dinámica de memoria, se utiliza un "recolector de basura" , un objeto de programa que supervisa la asignación de memoria y garantiza su liberación oportuna. El recolector de basura también se asegura de que los bloques libres tengan el tamaño máximo y, si es necesario, desfragmenta la memoria.

Elementos de implementación

El lenguaje de programación C (C)

El lenguaje de programación C tiene las siguientes funciones para la asignación de memoria dinámica incluidas en la biblioteca estándar :

El lenguaje de programación C++

C ++ tiene dos operadores:

El lenguaje de programación Object Pascal

Object Pascal tiene dos operadores:

Véase también

Fuentes