Diferencia entre asignación de memoria estática y dinámica en C

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: 
 

  1. Tiempo de compilación o asignación de memoria estática
  2. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *