¿Cuál es la diferencia entre unidad de memoria estática y unidad de memoria dinámica en lenguaje C?
La memoria estática utiliza memoria de espacio de pila y el programador no la asigna. El programador asigna y recupera la memoria dinámica según sea necesario.
La mayor diferencia es que la memoria dinámica se asigna usando la nueva palabra clave o la función malloc o calloc. La razón por la que el programador debe asignar memoria es que a veces no se puede estar seguro de cuánta memoria utilizará el programa. Por ejemplo, la cantidad de datos a utilizar la determina el usuario o mediante una consulta en un archivo o base de datos, mientras que el programador no puede determinar la asignación de memoria mientras escribe el programa. Los programadores no pueden asignar memoria mientras escriben un programa. En cambio, el programa debe encontrar memoria disponible por sí mismo en tiempo de ejecución y la memoria debe asignarse dinámicamente.
Por ejemplo, para determinar la dimensión de la matriz que ingresará el usuario en función del número entero (no un valor fijo) ingresado por el usuario, podemos usar una variable n, úsela para aceptar la la entrada del usuario y luego generar una matriz de números enteros. El programa no se puede escribir en el formato int
array[n] y, por lo tanto, el programa no se compilará porque n es un valor indefinido. La memoria solo se puede asignar mediante la entrada del usuario usando new o malloc. Puedes escribir así:
int
n;
cout
<<
"input
n:";
cin
>>
n;
cout
< <
cout
<
<
<<
endl;
int*
iArray
=
nuevo
int[n];
para p>
(int
i
=
0;
i
<
n;
i++)
{
cin
>>iArray[i];
p>