En programación, es necesario almacenar datos computacionales. Estos datos se almacenan en la memoria. Las ubicaciones de memoria para almacenar datos en la programación de computadoras se conocen como variables. Las variables tienen un tipo de datos específico. Por lo tanto, la memoria está asignada para ejecutar los programas. La memoria se puede asignar de dos maneras. Son asignación de memoria estática y asignación de memoria dinámica. En la asignación de memoria estática, una vez que se asigna la memoria no se puede cambiar. La memoria no es reutilizable. Pero en la asignación de memoria dinámica, una vez que se asigna la memoria se puede cambiar. los diferencia clave entre la asignación de memoria estática y dinámica es que en la asignación de memoria estática, una vez que se asigna la memoria, el tamaño de la memoria se fija mientras que en la asignación de memoria dinámica, una vez que se asigna la memoria, se puede cambiar el tamaño de la memoria.
1. Resumen y diferencia clave
2. ¿Qué es la asignación de memoria estática?
3. ¿Qué es la asignación de memoria dinámica?
4. Similitudes entre la asignación de memoria estática y dinámica
5. Comparación lado a lado: asignación de memoria estática frente a dinámica en forma de tabla
6. Resumen
En la asignación de memoria estática, la memoria asignada es fija. Una vez que se asigna la memoria, no se puede cambiar. La memoria no puede ser aumentada o disminuida. Por ejemplo, en lenguaje C si el programador escribe int x, lo que significa que la variable puede almacenar un valor entero. El número de bytes depende de la computadora. También puede haber matrices. P.ej. int x [5]; Esta x es una matriz que puede almacenar una secuencia de datos que son del mismo tipo. Puede almacenar cinco elementos enteros. No puede almacenar más de cinco elementos. En Java, una matriz se puede crear como, int arr [] = new int [5]; La matriz 'arr' puede almacenar 5 valores enteros y no puede almacenar más que eso.
Figura 01: Métodos de asignación de memoria
En la asignación de memoria estática, una vez que se asignan las variables, permanecen permanentes. Después de la asignación inicial, el programador no puede cambiar el tamaño de la memoria. Si el programador asignó una matriz que puede almacenar 10 elementos, no es posible almacenar valores superiores a la cantidad especificada. Si el programador asignó inicialmente una matriz que puede contener 10 elementos, pero solo necesitaba 5 elementos, entonces hay un desperdicio de memoria. Esa memoria ya no es necesaria, pero tampoco es posible reutilizar la memoria. La asignación de memoria estática es fija, pero la implementación es simple y fácil, y también es rápida.
A veces es necesario cambiar el tamaño de la memoria. Entonces la memoria puede ser asignada dinámicamente. Dependiendo de las inserciones y eliminaciones de los elementos de datos, la memoria puede aumentar o disminuir. Se le conoce como asignación de memoria dinámica..
En lenguaje C, archivo de cabecera stdlib.h, hay cuatro funciones para la asignación de memoria dinámica. Son calloc, malloc, realloc y libres. La función malloc () asigna un tamaño requerido de bytes y devuelve un puntero vacío, señalando el primer byte de la memoria asignada. La función calloc () asigna un tamaño requerido de bytes y los inicializa a cero. Luego devuelve un puntero a la memoria. La función free () se utiliza para reasignar la memoria asignada. Y la función realloc puede modificar la memoria previamente asignada. Después de asignar memoria usando calloc o malloc, el tamaño de la memoria es fijo, pero se puede aumentar o disminuir usando la función realloc. En Java, las colecciones se pueden utilizar para la asignación de memoria dinámica.
La principal ventaja de la asignación de memoria dinámica es que ahorra memoria. El programador puede asignar memoria o liberar la memoria según sea necesario. La memoria se puede reasignar durante la ejecución y puede liberar la memoria cuando no es necesaria. La asignación de memoria dinámica también es eficiente que la asignación de memoria estática. Una desventaja es que la implementación de la asignación dinámica de memoria es compleja.
Asignación de memoria estática vs dinámica | |
La asignación de memoria estática es un método de asignación de memoria, y una vez que se asigna la memoria, es fija. | La asignación de memoria dinámica es un método de asignación de memoria, y una vez que se asigna la memoria, se puede cambiar. |
Modificación | |
En la asignación de memoria estática, no es posible cambiar el tamaño después de la asignación inicial. | En la asignación de memoria dinámica, la memoria se puede minimizar o maximizar en consecuencia. |
Implementación | |
La asignación de memoria estática es fácil de implementar. | La asignación de memoria dinámica es compleja de implementar. |
Velocidad | |
En la memoria estática, la ejecución de la asignación es más rápida que la asignación de memoria dinámica. | En la memoria dinámica, la ejecución de la asignación es más lenta que la asignación de memoria estática. |
Utilización de la memoria | |
En la asignación de memoria estática, no se puede reutilizar la memoria no utilizada. | La asignación de memoria dinámica permite reutilizar la memoria. El programador puede asignar más memoria cuando sea necesario. Puede liberar la memoria cuando sea necesario.. |
En programación, la asignación de memoria estática y la asignación de memoria dinámica son dos mecanismos para asignar memoria. La diferencia entre la asignación de memoria estática y dinámica es que en la asignación de memoria estática, una vez que se asigna la memoria, el tamaño de la memoria se fija, mientras que en la asignación de memoria dinámica, una vez que se asigna la memoria, se puede cambiar el tamaño de la memoria. El programador puede decidir si la memoria debe ser estática o dinámica según la aplicación.
Puede descargar la versión en PDF de este artículo y usarla para fines fuera de línea, como se indica en la nota de cita. Descargue la versión en PDF aquí: Diferencia entre asignación de memoria estática y dinámica
1.Kayal, Somnath. “SOMNATH KAYAL”. Diferencia entre la asignación de memoria estática y la asignación de memoria dinámica, 1 de enero de 1970. Disponible aquí
2.tutorialspoint.com. “Arreglos en C.” El punto. Disponible aquí
3.nareshtechnologies. Memoria estática vs memoria dinámica | Tutorial de lenguaje C, Naresh i Technologies, 19 de septiembre de 2016. Disponible aquí