来自维基百科:
动态加载是一种机制,计算机程序可以通过该机制在运行时将库(或其他二进制文件)加载到内存中,检索库中包含的函数和变量的地址,执行这些函数或访问这些变量,并卸载记忆中的图书馆。
后期绑定是一种计算机编程机制,其中在运行时按名称查找对象上调用的方法。
在我看来,
相似之处在于它们都是在运行时查找方法的机制。
不同之处在于动态加载在运行时加载库后不需要使用链接器,但后期绑定总是需要链接器。
我不确定我是否正确,尤其是差异部分。我想从你的分析中了解更多。
来自维基百科:
动态加载是一种机制,计算机程序可以通过该机制在运行时将库(或其他二进制文件)加载到内存中,检索库中包含的函数和变量的地址,执行这些函数或访问这些变量,并卸载记忆中的图书馆。
后期绑定是一种计算机编程机制,其中在运行时按名称查找对象上调用的方法。
在我看来,
相似之处在于它们都是在运行时查找方法的机制。
不同之处在于动态加载在运行时加载库后不需要使用链接器,但后期绑定总是需要链接器。
我不确定我是否正确,尤其是差异部分。我想从你的分析中了解更多。
后期绑定,就像过度使用一样,是一种以牺牲正确性和可能的后期灾难性故障为代价来挤出一些额外好处(性能/内存余量)的黑客行为。
如果没有后期绑定,只有在加载时可以解析重定位所需的所有符号时,模块的动态加载才会成功,并且您会得到一个有意义的错误,如果它们无法解析,您可以从中恢复。使用后期绑定,动态加载几乎总是“成功”,然后当动态加载的模块尝试引用无法解析的符号时,您的程序可能会崩溃。
据我了解,动态加载比后期绑定低。所以后期绑定的函数调用看起来和感觉就像一个普通的函数调用,除了如果缺少库,那么应用程序将在尝试调用时终止,而不是在应用程序启动时终止,而对于动态加载,您必须编写更多代码但是您可以进行错误处理,例如调用回退方法。