Динамическое связывание (Dynamic Linking): • Использует внешние библиотеки и модули, которые загружаются в память во время выполнения программы. Простыми словами, динамическое связывание позволяет программе подключать (или даже отключать) части кода в процессе выполнения. Это особенно полезно при работе с динамическими библиотеками (DLL) или в случаях, когда ты хочешь загружать определенные части программы только по мере необходимости.
• Преимущество: Экономия места, так как разные приложения могут совместно использовать одну копию библиотеки.
• Недостаток: Необходимость наличия библиотек на компьютере, на котором выполняется программа, и увеличение времени запуска программы из-за загрузки библиотек.
Динамическое связывание при загрузке (Load-Time Dynamic Linking): • Библиотеки загружаются в память при старте программы, но до выполнения программы. Адреса функций из DLL узнаются в момент, когда программа загружается в память. Это происходит в самом начале, когда ты запускаешь программу.
• Преимущество: Время загрузки сокращается по сравнению с полностью динамическим связыванием.
• Недостаток: Библиотеки все равно должны быть доступны на компьютере.
Динамическое связывание при выполнении (Run-Time Dynamic Linking): • Библиотеки загружаются в память во время выполнения программы, когда функции из них действительно нужны. Адреса функций из DLL определяются только в момент, когда программа действительно вызывает эти функции. Это происходит во время выполнения программы.
• Преимущество: Минимизируется нагрузка на память и время загрузки, так как загружаются только необходимые части библиотеки.
• Недостаток: Может вызвать небольшую задержку при первом вызове функции
Динамическое связывание с отложенной загрузкой (Lazy Loading): • Библиотеки загружаются только при первом вызове функции из них. это стратегия, при которой загрузка и связывание библиотеки (или её части) происходят только в момент, когда они действительно нужны программе, а не заранее при запуске.
• Преимущество: Минимизируется время запуска и использование памяти.
• Недостаток: Может вызвать небольшую задержку при первом вызове функции.