动态加载和后期绑定有什么相同点和不同点?

来自维基百科:

动态加载是一种机制,通过该机制,计算机程序可以在运行时将库(或其他二进制文件)加载到内存中,检索库中包含的函数和变量的地址,执行这些函数或访问这些变量,然后卸载来自记忆库。

后期绑定是一种计算机编程机制,其中在运行时通过名称查找对象调用的方法。


在我看来,

相似之处在于它们都是在运行时查找方法的机制。

不同之处在于动态加载在运行时加载库后不需要使用链接器,但后期绑定始终需要链接器。

我不确定我是否正确,尤其是差异部分。 我想从您的分析中了解更多信息。

延迟绑定,就像过度使用一样,是以牺牲正确性和可能的​​后期灾难性故障为代价来挤出一些额外的好处(性能/内存容限)的黑客攻击。

如果没有后期绑定,只有在加载时可以解析重定位所需的所有符号时,模块的动态加载才会成功,并且如果无法解析,您将获得有意义的错误,可以从中恢复。 使用后期绑定,动态加载几乎总是“成功”,然后当动态加载模块尝试引用无法解析的符号时,可能会导致程序崩溃。

据我了解,动态加载比后期绑定低。 所以后期绑定函数调用的外观和感觉就像普通函数调用一样,除非缺少库,否则应用程序将在尝试调用时终止而不是在应用程序启动时终止,而对于动态加载,您必须编写更多代码但是你要做error handling,比如调用一个回退方法。