2009-10-08 45 views

Respuesta

11

Habrá detalles específicos del idioma, pero la idea general es:

  • estática: asignado al inicio del programa, existe para toda la vida del programa
  • automática: asignado a la entrada en un bloque, existe para duración de ese bloque

La asignación dinámica requiere un poco más de explicación: se asigna cuando se asigna (por ejemplo, con algo así como 'nueva XXX'). En (la mayoría de las implementaciones de) C++, existirá hasta que lo elimine explícitamente. Con más idiomas más nuevos (por ejemplo, Java, C#) existirá hasta que el recolector de elementos no utilizados determine que ya no es accesible, momento en el que se destruirá automáticamente.

No todos los idiomas tienen las tres formas de asignación. En algunos casos (por ejemplo, Java), incluso si se admite una forma de asignación, existen restricciones tales como permitir la asignación automática para tipos incorporados, pero que requieren asignación dinámica para tipos de objetos (es decir, instancias de clases).

3

La asignación estática es la memoria que se ha reservado para una aplicación cuando se carga por primera vez. Esta sección de la memoria se mantiene para usarse solo con esa aplicación, y está disponible nuevamente una vez que se cierra el programa.

La asignación dinámica es la memoria que se asigna según sea necesario, y se desasigna/libera cuando ya no es necesaria. Montones y pilas son ejemplos de áreas de memoria que pueden asignarse dinámicamente.

Cuestiones relacionadas