【问题标题】:what are similarities and differences between dynamic loading and late binding?动态加载和后期绑定有什么异同?
【发布时间】:2011-07-28 22:15:10
【问题描述】:

来自维基百科:

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

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


在我看来,

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

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

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

【问题讨论】:

  • 现在想象一下,如果你后期绑定到一个动态加载的方法:-)

标签: c late-binding dynamic-loading


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 2011-08-17
      • 2013-08-04
      • 2018-03-12
      相关资源
      最近更新 更多