不要な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/B0021D5ETQ.09.MZZZZZZZ.jpg)
![ビデオ・グレイテスト・ヒッツ~ヒストリー [DVD]](http://images.amazon.com/images/P/B000BNM8B0.09.MZZZZZZZ.jpg)
![All About 東方神起 Season 3(仮) [DVD]](http://images.amazon.com/images/P/B002E92L48.09.MZZZZZZZ.jpg)
![ライヴ・イン・ブカレスト [DVD]](http://images.amazon.com/images/P/B000BNM8AG.09.MZZZZZZZ.jpg)
![マンマ・ミーア! [DVD]](http://images.amazon.com/images/P/B0026O1JD0.09.MZZZZZZZ.jpg)
![けいおん! 1 (初回限定生産) [Blu-ray]](http://images.amazon.com/images/P/B0024DGN70.09.MZZZZZZZ.jpg)
![ヱヴァンゲリヲン新劇場版:序 (EVANGELION:1.11) [Blu-ray]](http://images.amazon.com/images/P/B001VNCVTI.09.MZZZZZZZ.jpg)
![007 / 慰めの報酬 (2枚組特別編) 〔初回生産限定〕 [DVD]](http://images.amazon.com/images/P/B001LF3QMW.09.MZZZZZZZ.jpg)
![ヒストリー・オン・フィルム VOLUME II [DVD]](http://images.amazon.com/images/P/B000BNM8AQ.09.MZZZZZZZ.jpg)
![MOVIE12/UNICORN TOUR 2009 蘇える勤労 [DVD]](http://images.amazon.com/images/P/B00254L95O.09.MZZZZZZZ.jpg)









