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

时间:2011-07-28 22:15:11

标签: c late-binding dynamic-loading

来自维基百科:

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

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


在我看来,

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

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

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

2 个答案:

答案 0 :(得分:0)

据我了解,动态加载比后期绑定低。因此,后期绑定函数调用看起来和感觉就像普通函数调用一样,除非缺少库,否则应用程序将在尝试调用时终止而不是在应用程序启动时终止,而对于动态加载,您必须编写更多代码但是你可以进行错误处理,例如调用回退方法。

答案 1 :(得分:0)

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

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