0

ウィキペディアから:

動的ロードは、コンピュータープログラムが実行時にライブラリ(または他のバイナリ)をメモリにロードし、ライブラリに含まれる関数と変数のアドレスを取得し、それらの関数を実行するか、それらの変数にアクセスし、メモリからのライブラリ。

実行時バインディングは、オブジェクトに対して呼び出されているメソッドが実行時に名前で検索されるコンピュータープログラミングメカニズムです。


私の意見では、

類似点は、どちらも実行時にメソッドが検索されるメカニズムであるということです。

違いは、動的ロードでは実行時にライブラリをロードした後にリンカーを使用する必要はありませんが、遅延バインディングには常にリンカーが必要です。

私が正しいかどうか、特に違いの部分はわかりません。あなたの分析からもっと学びたいと思います。

4

2 に答える 2

0

私が理解しているように、動的ローディングは遅延バインディングよりも低いレベルです。したがって、レイトバウンド関数呼び出しは通常の関数呼び出しと同じように見えますが、ライブラリがない場合、アプリケーションの起動時ではなく呼び出しが試行されたときにアプリケーションが終了しますが、動的ロードの場合はさらにコードを記述する必要がありますただし、フォールバックメソッドの呼び出しなどのエラー処理を行うことができます。

于 2011-07-28T22:38:32.617 に答える
0

実行時バインディングは、オーバーコミットと同様に、正確性と発生する可能性のある遅延致命的な障害を犠牲にして、いくつかの追加の利点(パフォーマンス/メモリ許容量)を絞り出すためのハックです。

遅延バインディングがないと、モジュールの動的ロードは、再配置に必要なすべてのシンボルがロード時に解決できる場合にのみ成功し、解決できない場合に回復できる意味のあるエラーが発生します。遅延バインディングを使用すると、動的ロードは事実上常に「成功」​​し、後で動的ロードされたモジュールが解決できないシンボルを参照しようとすると、プログラムがクラッシュする可能性があります。

于 2011-07-28T23:13:03.663 に答える