Diferencia entre enlace estático y dinámico

Autor: Laura McKinney
Fecha De Creación: 1 Abril 2021
Fecha De Actualización: 12 Mayo 2024
Anonim
Diferencia entre enlace estático y dinámico - Tecnología
Diferencia entre enlace estático y dinámico - Tecnología

Contenido


La asociación de enlace de una "definición de función" a una "llamada de función" o una asociación de un "valor" a una "variable" se denomina "enlace". Durante la compilación, cada "definición de función" recibe una dirección de memoria; tan pronto como se realiza la llamada a la función, el control de la ejecución del programa se mueve a esa dirección de memoria y se ejecuta el código de la función almacenado en esa ubicación, esto es Enlace de "llamada de función" a "definición de función". El enlace se puede clasificar como "enlace estático" y "enlace dinámico".

Si ya se conoce antes del tiempo de ejecución, qué función se invocará o qué valor se asigna a una variable, entonces es un "enlace estático". si se llega a saber en tiempo de ejecución, se llama "enlace dinámico".


  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo:

Bases para la comparaciónEnlace EstáticoEnlace Dinámico
Evento ocurrenciaLos eventos que se producen en tiempo de compilación son "Enlace estático".
Los eventos que se producen en tiempo de ejecución son "Enlace dinámico".
InformaciónToda la información necesaria para llamar a una función se conoce en tiempo de compilación.Toda la información necesita llamar a una función que se conoce en tiempo de ejecución.
VentajaEficiencia.Flexibilidad.
HoraEjecución rápidaEjecución lenta
Nombre alternativoEnlace temprano.Enlace tardío.
EjemploLlamada de función sobrecargada, operadores sobrecargados.Función virtual en C ++, métodos anulados en java.

Definiciones de enlace estático

Cuando el compilador reconoce toda la información requerida para llamar a una función o todos los valores de las variables durante el tiempo de compilación, se llama "enlace estático". Como toda la información requerida se conoce antes del tiempo de ejecución, aumenta la eficiencia del programa y también mejora la velocidad de ejecución de un programa.


El enlace estático hace que un programa sea muy eficiente, pero disminuye la flexibilidad del programa, ya que los "valores de la variable" y la "llamada a función" están predefinidos en el programa. El enlace estático se implementa en un programa en el momento de la codificación.

La sobrecarga de una función u operador es el ejemplo de polimorfismo en tiempo de compilación, es decir, enlace estático.

Implementación de enlace estático en C ++ con un ejemplo de sobrecarga

#incluir usando el espacio de nombres estándar; sobrecarga de clase {int a, b; public: int load (int x) {// primera función load (). a = x; cout << "El valor de x es" <funct (); // La declaración anterior decide qué función de clases se va a invocar. p = & d1; // Vlaue del puntero cambia. p-> funct (); // La declaración anterior decide qué función de clases se va a invocar. p = & d2; // Nuevamente, vlaue del puntero cambia. p-> funct (); // La declaración anterior decide qué función de clases se va a invocar. devuelve 0; }

Aquí el valor del puntero cambia a medida que el programa está en ejecución y el valor del puntero decide qué función de clase se invocará. Entonces, aquí, la información se proporciona en tiempo de ejecución, lleva tiempo vincular los datos que ralentiza la ejecución.

  1. Los eventos que ocurren en tiempo de compilación, como un código de función asociado con una llamada de función o asignación de valor a una variable, se denominan enlace estático / temprano. Por el contrario, cuando estas tareas se realizan durante el tiempo de ejecución, se denominan Enlace dinámico / tardío.
  2. La "eficiencia" aumenta en el enlace estático, ya que todos los datos se recopilan antes de la ejecución. Pero en el enlace dinámico, los datos se adquieren en tiempo de ejecución para que podamos decidir qué valor asignar a una variable y qué función invocar en tiempo de ejecución esto hace que la ejecución sea "flexible".
  3. El "enlace estático" hace que la ejecución de un programa sea "más rápida", ya que todos los datos necesarios para ejecutar un programa se conocen antes de la ejecución. En el "enlace dinámico", los datos necesarios para ejecutar un programa son conocidos por el compilador en el momento de la ejecución, lo que lleva tiempo vincular los valores a los identificadores; por lo tanto, hace que la ejecución del programa sea más lenta.
  4. El enlace estático también se llama enlace temprano porque el código de función está asociado con la llamada de función durante el tiempo de compilación, que es anterior al enlace dinámico en el que el código de función está asociado con la llamada de función durante el tiempo de ejecución, por lo tanto, también se llama enlace tardío.

Conclusión:

Sin embargo, concluimos que cuando tenemos un conocimiento previo de los valores de las llamadas a variables y funciones, aplicamos el enlace estático. Por el contrario, en el enlace dinámico, proporcionamos toda la información en el momento de la ejecución.