Asignación de memoria: la asignación de memoria es un proceso mediante el cual los programas y servicios informáticos se asignan con espacio de memoria física o virtual. La asignación de memoria se realiza antes o en el momento de la ejecución del programa. Hay dos tipos de asignaciones de memoria:
- Tiempo de compilación o asignación de memoria estática
- Tiempo de ejecución o asignación de memoria dinámica
Asignación de memoria estática: el compilador asigna memoria estática para las variables declaradas. La dirección se puede encontrar utilizando la dirección del operador y se puede asignar a un puntero. La memoria se asigna durante el tiempo de compilación.
Asignación de memoria dinámica: la asignación de memoria realizada en el momento de la ejecución (tiempo de ejecución) se conoce como asignación de memoria dinámica . Las funciones calloc() y malloc() admiten la asignación de memoria dinámica. En la asignación dinámica de espacio de memoria se asigna mediante estas funciones cuando el valor es devuelto por funciones y asignado a variables de puntero.
Diferencia tabular entre asignación de memoria estática y dinámica en C :
S.No |
Asignación de memoria estática |
Asignación de memoria dinámica |
1 | En la asignación de memoria estática, las variables se asignan de forma permanente, hasta que se ejecuta el programa o finaliza la llamada a la función. | En la asignación de memoria dinámica, las variables se asignan solo si su unidad de programa se activa. |
2 | La asignación de memoria estática se realiza antes de la ejecución del programa. | La asignación dinámica de memoria se realiza durante la ejecución del programa. |
3 | Utiliza stack para administrar la asignación estática de memoria . | Utiliza montón para administrar la asignación dinámica de memoria . |
4 | es menos eficiente | es mas eficiente |
5 | En la asignación de memoria estática, no hay reutilización de memoria | En la asignación de memoria dinámica, hay capacidad de reutilización de la memoria y la memoria se puede liberar cuando no se requiere |
6 | En la asignación de memoria estática, una vez que se asigna la memoria, el tamaño de la memoria no puede cambiar. | En la asignación de memoria dinámica, cuando se asigna memoria, se puede cambiar el tamaño de la memoria. |
7 | En este esquema de asignación de memoria, no podemos reutilizar la memoria no utilizada. | Esto permite reutilizar la memoria. El usuario puede asignar más memoria cuando sea necesario. Además, el usuario puede liberar la memoria cuando la necesite. |
8 | En este esquema de asignación de memoria, la ejecución es más rápida que la asignación de memoria dinámica. | En este esquema de asignación de memoria, la ejecución es más lenta que la asignación de memoria estática. |
9 | En esta memoria se asigna en tiempo de compilación. | En esta memoria se asigna en tiempo de ejecución. |
10 | En esta memoria asignada permanece desde el principio hasta el final del programa. | En esta memoria asignada se puede liberar en cualquier momento durante el programa. |
11 | Ejemplo: esta asignación de memoria estática generalmente se usa para arrays . | Ejemplo: esta asignación de memoria dinámica se usa generalmente para la lista enlazada . |
Publicación traducida automáticamente
Artículo escrito por abhishek18bme1037 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA