Condividi tramite


Vantaggi del collegamento dinamico

Il collegamento dinamico presenta i vantaggi seguenti rispetto al collegamento statico:

  • Più processi che caricano la stessa DLL nello stesso indirizzo di base condividono una singola copia della DLL in memoria fisica. In questo modo si salva la memoria di sistema e si riduce lo scambio.
  • Quando le funzioni in una DLL cambiano, le applicazioni che le usano non devono essere ricompilate o ricollegate finché gli argomenti della funzione, le convenzioni di chiamata e i valori restituiti non cambiano. Al contrario, il codice oggetto collegato in modo statico richiede che l'applicazione venga ricollegata quando le funzioni cambiano.
  • Una DLL può fornire supporto after-market. Ad esempio, una DLL del driver di visualizzazione può essere modificata per supportare una visualizzazione non disponibile quando l'applicazione è stata inizialmente spedita.
  • I programmi scritti in linguaggi di programmazione diversi possono chiamare la stessa funzione DLL purché i programmi seguano la stessa convenzione di chiamata usata dalla funzione. La convenzione di chiamata (ad esempio C, Pascal o chiamata standard) controlla l'ordine in cui la funzione chiamante deve eseguire il push degli argomenti nello stack, sia che la funzione o la funzione chiamante sia responsabile della pulizia dello stack e se gli argomenti vengono passati nei registri. Per altre informazioni, vedere la documentazione inclusa nel compilatore.

Un potenziale svantaggio dell'uso delle DLL è che l'applicazione non è autonoma; dipende dall'esistenza di un modulo DLL separato. Il sistema termina i processi usando il collegamento dinamico in fase di caricamento se richiedono una DLL non trovata all'avvio del processo e restituisce un messaggio di errore all'utente. Il sistema non termina un processo usando il collegamento dinamico di runtime in questa situazione, ma le funzioni esportate dalla DLL mancante non sono disponibili per il programma.