¿Qué es la asignación de memoria dinámica?
La asignación de memoria dinámica, también llamada asignación de memoria basada en el montón, es un tipo de gestión de memoria que se contrasta fuertemente por la asignación de memoria estática. En la asignación de memoria dinámica, el programador le dice a la computadora exactamente cuánta memoria asignar para cada programa y cuánto tiempo para mantener la memoria. Esto resuelve muchos de los problemas que ocurren en la asignación de memoria estática, como el uso excesivo de la memoria y los programas estancados. Si bien resuelve muchos problemas, si el programador olvida decirle a la memoria que descarga, entonces la memoria dinámica puede convertirse en un problema.
Las computadoras, de forma predeterminada, usan la asignación de memoria estática. Esto significa que la memoria se mantiene en los programas cuando se usan, incluso si el programa ya no se usa o si la memoria sostenida se vuelve peligrosa o un obstáculo para el rendimiento. Por ejemplo, si el usuario deja de ejecutar un programa que toma 2 megabytes (MB) en una máquina de 3 MB, y un segundo programa necesita otro 2 MB, el segundo programa no funcionará. Esto es porque no hay enDebe la memoria que queda en la computadora para el otro programa.
Con la asignación de memoria estática, el usuario o el programador no pueden especificar la cantidad de memoria que desea almacenar, ni el programador puede decirle a la memoria estática que volcara la memoria para liberar los recursos. Es por eso que los usuarios avanzados a menudo usan la asignación de memoria dinámica. El programador puede controlar todo sobre la memoria, incluido cuánto tiempo retener los recursos.
Por ejemplo, el programador puede establecer una asignación de memoria dinámica para mantener solo 1 MB, o menos, lo que ahorraría suficiente memoria del sistema para permitir que otros programas se abran. Esto se puede hacer porque la memoria estática generalmente se aferra a todo sobre el programa, mientras que la memoria dinámica permite a los programadores establecerla en un valor más bajo que contiene algunos datos, pero no todo. Al mismo tiempo, la memoria estática aún se necesitará, y se puede configurar en este esquema de asignación.
Un problema potencial con la asignación de memoria dinámica, una que rara vez entra en juego, es que la memoria dinámica puede llenarse si el programador olvida establecer un valor de tiempo. Si no se establece ningún valor de tiempo, a diferencia de la memoria estática que eventualmente liberará la memoria, la memoria dinámica se mantendrá en la información. Si el programa tiene una aplicación de volcado de basura, y la mayoría lo hace, se activará después de una cierta cantidad de tiempo para borrar la memoria. Todavía es la mejor práctica establecer un valor de tiempo para la asignación de memoria.