不要なFreeLibraryは避けよ
最近、同じプロセス内で何度も使うような関数を何度もFreeLibraryしている例を見ました。その遅さは見るに堪えないものでした。
LoadLibraryした後に決定される関数のアドレス(GetProcAddress)は、FreeLibraryしない限り、プロセス終了時まで変化することがありません。
つまり記憶しておけばよいのです。DLL_PROCESS_ATTACH等をうまく使い、再計算を避ける工夫をしましょう。
また、LoadLibraryのタイミングによっては、同じ関数でもアドレスが変わる可能性があるのでバグの原因にもなります。
ちなみに、メモリに制約があり、何度もLoadLibraryをしなくてはならないとしたら何に注意すべきでしょうか?
答えはBaseAddressです。
DLLをVC++のデフォルトで作成すると0x10000000あたりで固定だったと思いますが、特に同一プロセスで複数のDLLを使う場合にこれを設定しておくことは常識だと思います。
LoadLibraryした後に決定される関数のアドレス(GetProcAddress)は、FreeLibraryしない限り、プロセス終了時まで変化することがありません。
つまり記憶しておけばよいのです。DLL_PROCESS_ATTACH等をうまく使い、再計算を避ける工夫をしましょう。
また、LoadLibraryのタイミングによっては、同じ関数でもアドレスが変わる可能性があるのでバグの原因にもなります。
ちなみに、メモリに制約があり、何度もLoadLibraryをしなくてはならないとしたら何に注意すべきでしょうか?
答えはBaseAddressです。
DLLをVC++のデフォルトで作成すると0x10000000あたりで固定だったと思いますが、特に同一プロセスで複数のDLLを使う場合にこれを設定しておくことは常識だと思います。

![ライヴ・イン・ブカレスト [DVD]](http://images.amazon.com/images/P/B000BNM8AG.09.MZZZZZZZ.jpg)
![5×10 All the BEST! CLIPS 1999-2009 [DVD]](http://images.amazon.com/images/P/B002PJZTT6.09.MZZZZZZZ.jpg)
![ハリー・ポッターと謎のプリンス 特別版(2枚組) [DVD]](http://images.amazon.com/images/P/B002AQTCWY.09.MZZZZZZZ.jpg)
![Mr.Children Tour 2009 ~終末のコンフィデンスソングス~ [DVD]](http://images.amazon.com/images/P/B002KKBIG8.09.MZZZZZZZ.jpg)
![化物語 第三巻 / するがモンキー (完全生産限定版) [Blu-ray]](http://images.amazon.com/images/P/B002LGVLGI.09.MZZZZZZZ.jpg)
![ヒストリー・オン・フィルム VOLUME II [DVD]](http://images.amazon.com/images/P/B000BNM8AQ.09.MZZZZZZZ.jpg)
![化物語 第四巻 / なでこスネイク【完全生産限定版】 [Blu-ray]](http://images.amazon.com/images/P/B002O123BM.09.MZZZZZZZ.jpg)
![ターミネーター4 スペシャル・エディション [Blu-ray]](http://images.amazon.com/images/P/B002DGTAH8.09.MZZZZZZZ.jpg)
![ターミネーター4 コレクターズ・エディション [DVD]](http://images.amazon.com/images/P/B001LF3QOA.09.MZZZZZZZ.jpg)
![ムーンウォーカー [DVD]](http://images.amazon.com/images/P/B002BS02QG.09.MZZZZZZZ.jpg)












