Bueno, la razón es bastante simple.
Las matrices de longitud variable siguen la asignación automática de memoria (Ama por simplicidad). Aquí, la vida útil de su variable solo dura hasta que el programa esté dentro del alcance de la variable.
Por ejemplo, mira el siguiente código.
- ¿Pueden los algoritmos de aprendizaje de refuerzo actuales elegir múltiples acciones dado el estado actual?
- Tengo conocimiento de estructuras de datos y algoritmos, pero me falta programación competitiva, ¿cómo debo mejorar? ¿Puedo sobrevivir a la competencia de hoy?
- ¿Cuál sería un algoritmo para aplicar un filtro rosa a una imagen?
- ¿Cuál es el lenguaje de programación más eficiente para diseñar algoritmos médicos?
- ¿Cómo se implementan las matrices de JavaScript internamente?
void automaticExample (int v)
{
int arr [v];
// Haz cosas relevantes
}
Ahora la memoria asignada por int arr [v] permanece accesible solo hasta que su programa esté en la función ‘automaticExample’. Después de eso, se vuelve inaccesible. La vida útil de la variable no está bajo su control y dura tanto como el alcance.
Ahora veamos la asignación dinámica de memoria.
int * dynamicExample (int v)
{
int * p = (int *) malloc (v * sizeof (int));
// Haz cosas relevantes
volver p;
}
int * ptr = dynamicExample (); // Aún accesible
Entonces, aquí, puede acceder a la memoria asignada incluso cuando su programa está fuera del alcance de donde fue declarado.
Ahora se puede acceder a este trozo de memoria siempre que no se encuentre una declaración libre.
libre (ptr);
Por lo tanto, la asignación dinámica de memoria le permite un mayor acceso a la memoria, en comparación con la asignación automática de memoria, o lo que usted denomina matriz de longitud variable.